c++中为什么数组地址可以作为参数传递而不能直接赋值给别的数组呢

2024-12-16 02:58:21
推荐回答(4个)
回答1:

这是甲鱼的臀部--规定.
因为数组名表示数组的首地址,int b[]它要定义自己的数组空间,当然不能用别的数组的空间,所以不能把a传给它.但数组作为参数传递时,array只是个临时指针变量,函数还是直接对实参数组进行操作,不需要另外生成数组.

楼上两位说的a的指针,其实就是数组首元素的指针,即数组首地址,只不过我们平时说话不会太严格,所以导致了你的误解而已.

回答2:

这是C语言的缺限,也就是说数组不能赋。但指针可以!如:
int *p;
int a[5] = {1,2,3,4,5};
p = a;//可行!
则有:
*p = 1;
*(p+1) = 2;
.....
但是数组就不可以了!
int b[] = a;//........是绝对不行的!
当你看到指针的时候就知道了!其实数组可以用指针代替!

回答3:

int *b=a;

x(a);也是传过去a的指针.不是赋值

回答4:

数组名a是一个指针常量,记录着数组的起始地址,即指向数组首元素a[0]的指针,a的值不能改变,否则曾分配的空间就无法释放回收。
指针变量可以存放地址,可以将数组的首地址存放到一个指针变量中,利用指针变量访问元素就灵活方便多了,因此可以int *p=a; 函数参数传递的也是数组首地址。