1:指针的地址可以由以下方法得到:
int a = 5;
int *pA = &a;
cout<<"The &pA is :"<<&pA<<endl;
2:在定义的时候赋值是不能连等赋值的:
例如下面
int x = y = z = 5;
此时,编译器会对y 、z报错。同样,对于指针也是如此,例如:
int *m = *n = *w = 0;
此时,编译器会对n 、w报错。
3:对于指针的连等赋值建议使用地址连等赋值:
对于以下程序,编译器不会报错:
int *m =0 , *n = 0 , *w = 0;
*m = *n = *w = 8;//把8改为x(x已定义赋值)也一样
但是运行程序的时候会出现错误(至少对偶的机子是这样)。Windows XP提示:
“0x004013bd”指令引用的“0x00000000”内存。该内存不能为“written”。
所以建议使用:
m = n = w = &x;
只看见书上说定义指针时要注意给它地址赋初值,一时糊涂想到在这里已经有地址值了。
by 芽雨 2006-02-06 14:14:00
使用*单目运算符,则是对这个地址指向的值进行操作。也就是说:
*m = *n = *w = 8;
这一句是将m、n、w指向的值改写为8,而这个位置是0(NULL),一个无效地址,对无效地址指向的值进行写入则会导致程序崩溃。