地址操作符&
会返回操作数的地址。我们可以用这个操作符来初始化pi
指针,如下所示:
num = 0;
pi = #
num
变量设置为0,而pi
设置为指向num
的地址,如图1-4所示。
图1-4:内存赋值
可以在声明变量pi
的同时把它初始化为num
的地址,如下所示:
int num;
int *pi = #
有了以上声明,下面的语句在大部分编译器中都会报语法错误:
num = 0;
pi = num;
错误看起来可能是这样的:
error: invalid conversion from 'int' to 'int*'
pi
变量的类型是整数指针,而num
的类型是整数。这个错误消息是说整数不能转换为指向整数类型的指针。
注意 把整数赋值给指针一般都会导致警告或错误。
指针和整数不一样。在大部分机器上,可能两者都是存储为相同字节数的数字,但它们不一样。不过,也可以把整数转换为指向整数的指针:
pi = (int *)num;
这样不会产生语法错误。不过运行起来后,程序可能会因为试图解引地址0处的值而非正常退出。在大部分操作系统中,在程序中使用地址0是不合法的。
注意 尽快初始化指针是一个好习惯,如下所示:
int num; int *pi; pi = #
评论前必须登录!
注册