学
习
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”
三
、
类
的
继
承
的
概
念