一个定义为数组的实参能传给一个定义为指针的形参,而为什么函数返回的指针不能反向传给数组呢?

2025-05-24 05:08:43
推荐回答(1个)
回答1:

int p[20]; 这时 p 是一个数组的首地址,是一个【指针常量】。所谓指针常量,就是这个【指针的指向】不能被修改的指针,这个指针在程序刚运行的时候,被【初始化】指向内存的一个位置,在以后程序运行的过程中你都【不能修改】这个指针在内存中的指向。
因此 :p=func(a,b) ; 是非法的,因此你在修改一个【指针常量】 p 的值。常量的值不能修改!

int *p; 这时 p 是一个【指针变量】。所谓指针变量,就是能【不断改变】这个指针的【在内存中的指向】的一种指针。
因此 :p=func(a,b) ; 是合法的。你能够修改【指针变量】 p 的值,然p指向内存中另一块不同的区域。