background image

C++

char

 

str[]

 

=

 

“ABCDEFG”;

char   *pc   =   str;   //pc 是 指 向 string   str 的 指 针

short

 

x

 

=

 

33;

 

 

short   *px   =   &x;   //px 是 指 向 short   x 的 指 针

cout<<*pc   <<endl;   //

这 条 语 句 将 打 印 字 符

A’

pc   +=   4;   // 指 针 向 右 移 动 4 指 向 第 5 个 字 符

cout<<*pc   <<endl;   //

这 时 这 条 语 句 将 打 印 字 符

E’

pc--;

 

//

cout<<*pc   <<endl;   //

这 时 这 条 语 句 将 打 印 字 符

D’

cout<<*px   +   3   <<endl;   // 这 条 语 句 打 印 36 因 为 =33+3

 

在 C 程序中,假设我们已定义了以下的几个变量及函数: int k, tem, 

*P1,   *P2,   a[5],   f(),   *P3();   以 下 的 设 定 叙 述 (Assignment 

statements) 中 ,   那 些 有 语 法 上 的 错 误 ?   并 请 说 明 其 原 因

1.P1

 

=

 

&k;

2.P2

 

=

 

a;

3.P3

 

=

 

f;

4.P1

 

=

 

&a[3];

5.P1

 

=

 

P2;

:

(1) P1 = &k; P1 是指针变量, 因此 P1 表位址,而 k 表示一般变量,&k

k

,

.

(2) P2 = a; a 是数组名称,此时可代表数组存放在内存中的起始位址,

P2

,

.

(3) P3 = f; f 代表函数的名称,此时代表呼叫函数 f,因此含有传回值,

P3

为 指 针 变 量 , 故 此 式 有 错 误 .

(4) P1 = &a[3]1 表指针变量,代表位址,而&a[3]表取出索引(index)

3

,

.

(5) P1 = P2; P1,P2 皆为指针变量代表位址,此叙述是指将 P2 的位址

P1,

.

结 构 是 一 种 类 型 , 它 的 成 员 默 认 是 public.

struct Student // 定 义 一 个 结 构 Student 用 来 存 放 学 生 的 资 料

{

int

 

id;

 

//

char

 

name[30];

 

//

}

Student s = {555, “Davis, Samuel”}; //初始化 Student 的实例 s

cout<<s.id   “   “   <<s.name   <<endl;   //

“  

这 条 将 打 印

555 

Davis,Samuel”