C语言首地址问题
假设scanf("%d",&a[i]);输入首地址&a[i]是首地址。a也是首地址。a=&a[i]但是为什么scanf("%d",&a);会出错是否要去掉取地址符,还是加...
假设scanf("%d",&a[i]);输入首地址
&a[i]是首地址。 a也是首地址。a=&a[i]
但是为什么scanf("%d",&a);会出错
是否要去掉取地址符,还是加上指针变量 展开
&a[i]是首地址。 a也是首地址。a=&a[i]
但是为什么scanf("%d",&a);会出错
是否要去掉取地址符,还是加上指针变量 展开
展开全部
数组的首地址就是数组名, a[i]表示数组第i个元素对应的值, &a[i]表示取数组第i个元素的“位置”也就是地址。只有a才是首地址,&a[i]是说取数组第i个元素的地址,他是地址但不是数组的首地址喔。我们说的首地址是数组首个元素的地址,因为a等价于a+0等价于&a[0],因此a才是数组首元素的地址。
scanf("%d", &a)就表示了取地址的地址,变成了所谓的“二级”地址。 a和a+0等价,也就和&a[0]等价,表示取数组第0个元素的地址,注意它是一级地址,所以不报错。当然你可能不知道什么是一级地址,二级地址。如果“地址”前面添加&表示取地址的地址,你可以简单认为是个二级地址。因为学到指针变量时,会出现多级指针,数组指针等变态用法。学到后面你就知道了。
正确的写法是:
scanf("%d", a );
scanf("%d", &a[i])
scanf("%d", &a)就表示了取地址的地址,变成了所谓的“二级”地址。 a和a+0等价,也就和&a[0]等价,表示取数组第0个元素的地址,注意它是一级地址,所以不报错。当然你可能不知道什么是一级地址,二级地址。如果“地址”前面添加&表示取地址的地址,你可以简单认为是个二级地址。因为学到指针变量时,会出现多级指针,数组指针等变态用法。学到后面你就知道了。
正确的写法是:
scanf("%d", a );
scanf("%d", &a[i])
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询