这个样中不中
来源:百度知道 编辑:UC知道 时间:2024/06/24 14:02:10
pmax=&a[i];
可以写成*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