这个样中不中

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:02:10
pmax=&a[i];
可以写成*pmax=a[i];吗
它俩一样吗?

pmax=&a[i]; 您是想把数组a的第i个元素的地址赋给指针pmax。这样写是没有问题的。
*pmax=a[i]; 这句您是想把pmax这个指针所指向的内容赋为a[i]。但这么写虽然能通过编译,但运行时会出问题。
原因在于:
在声明pmax这个指针变量时,编译器并不会为这个指针初始化,即pmax是一个内存中随机的地址,你可以给pmax重新指定一个存在的地址,pmax=&a[i];这句就是这个作用。
但是不能通过*运算符间接访问pmax所指向的内容,程序在执行到*pmax=a[i]; 这句试图访问pmax这个不确定地址里的数据时就会出错
(一般会提示“xxxxx”指令引用的“xxxx”内存。该内存不能为“written”)。本来嘛,地址都不确定还怎么访问呢。

所以*pmax=a[i];是不正确的。

ps:一楼说的不错,但我想楼主可能不是那个意思,呵呵。当然要是声明了二维指针,就可以*pmax=a[i]这么用了,那时*pmax是个指针。

指针是C语言中最难学的部分,建议楼主看看《C和指针》这本书,会使您对指针的理解有一个质的飞跃。
希望我的回答能对您有所帮助。

不中

二者是不同的

pmax=&a[i];

表示pmax是一个一唯指针。即它的声明是类似这样的:int *pmax;

*pmax=a[i];

表示pmax是一个二唯指针。即它的声明是类似这样的:int **pmax