C指针地址操作符

地址操作符&会返回操作数的地址。我们可以用这个操作符来初始化pi指针,如下所示:

num = 0;
pi = #

num变量设置为0,而pi设置为指向num的地址,如图1-4所示。

enter image description here

图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 = #
赞(3)

评论 抢沙发

评论前必须登录!

 

C指针