c++中为什么数组地址可以作为参数传递而不能直接赋值给别的数组呢
voidx(intarray[]){}voidmain(){inta[5]={1,2,2,2,2};intb[]=a;//错误x(a);//正确函数中不也是把数组地址赋值...
void x(int array[]) { }
void main() {
int a[5]={1,2,2,2,2};
int b[]=a;//错误
x(a);//正确
函数中不也是把数组地址赋值给int array[]吗,为什么直接赋值给b数组就不行
a本身就是数组首元素地址,那a的指针岂不是地址的地址了,而且int * b=a;int c[]=b也不对啊 展开
void main() {
int a[5]={1,2,2,2,2};
int b[]=a;//错误
x(a);//正确
函数中不也是把数组地址赋值给int array[]吗,为什么直接赋值给b数组就不行
a本身就是数组首元素地址,那a的指针岂不是地址的地址了,而且int * b=a;int c[]=b也不对啊 展开
4个回答
展开全部
这是C语言的缺限,也就是说数组不能赋。但指针可以!如:
int *p;
int a[5] = {1,2,3,4,5};
p = a;//可行!
则有:
*p = 1;
*(p+1) = 2;
.....
但是数组就不可以了!
int b[] = a;//........是绝对不行的!
当你看到指针的时候就知道了!其实数组可以用指针代替!
int *p;
int a[5] = {1,2,3,4,5};
p = a;//可行!
则有:
*p = 1;
*(p+1) = 2;
.....
但是数组就不可以了!
int b[] = a;//........是绝对不行的!
当你看到指针的时候就知道了!其实数组可以用指针代替!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int *b=a;
x(a);也是传过去a的指针.不是赋值
x(a);也是传过去a的指针.不是赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组名a是一个指针常量,记录着数组的起始地址,即指向数组首元素a[0]的指针,a的值不能改变,否则曾分配的空间就无法释放回收。
指针变量可以存放地址,可以将数组的首地址存放到一个指针变量中,利用指针变量访问元素就灵活方便多了,因此可以int *p=a; 函数参数传递的也是数组首地址。
指针变量可以存放地址,可以将数组的首地址存放到一个指针变量中,利用指针变量访问元素就灵活方便多了,因此可以int *p=a; 函数参数传递的也是数组首地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询