33问答网
所有问题
C语言: 有以下声明: int a[5]; 为何语句:a++;是非法的,而语句:*(a+3)是合法的?
不好意思,打错了,应该是为什么语句:*(a+3)=4是合法的?
举报该问题
推荐答案 2013-02-05
这是指针里面的内容,a表示的是数组的首地址,注意它是固定不变的,就像一个常量一样,不能改变.
而*(a+3)表示的是数组里第四个数,*a是第一个数,*(a+1)是第二个,这是数组特有的,因为数组在内存里是顺序存放的,所以加1就表示下一个数的地址,再加*,就表示是那个数了.
具体可以参考c语言指针的书,这个是很基本的
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://33.wendadaohang.com/zd/dc4Ph54R0.html
其他回答
第1个回答 2013-02-05
a表示的是你定义的数组的首地址,就是个常量
a++;这个语句只能用于a是变量的时候;
*a 指的是地址a上的值,*(a+3)表示的是首地址后3位的地址上的值(因为数组地址是连续的,所以可以这样表示)
第2个回答 2013-02-05
jinkehouse回答的很好,这两天我也在搞这个,等你将来理解的多了可以看看函数指针,函数指针数组,函数指针的指针数组,二位数组,二位数组的指针数组。
第3个回答 2013-02-05
因为数组名是常量常量是不能进行++的懂了?就像1++你觉得可以吗?1+3当然可以了懂了吧
第4个回答 2013-02-05
*(a+3)等价于*(a[0]+3)等价于*(a[3])
第5个回答 2013-02-05
a ,顾名思义自加1,而作为数组名,本身就是一个指针常量,常量没有存储空间,自然不能自加1,就像不能写5 一样。
后面那个是指对数组成员赋值,和a[3]=4 是一模一样的,是指针形式的访问
相似回答
在
C语言
中,数组
a[5],
数组名a可以
a++
吗
答:
不能。因为变量指针可以递增,而数组不能递增,数组可以看成一个指针常量。代码修改:include<stdio.h> int main(void){ int array
[5]
={2,4,5,23,5}
;int
*p,i;p=array;printf("请输入是五个数:\n");for(i=0;i<5;i
++)
scanf("%d",&array[i]);printf("\n");printf("输出五个...
C语言
题目
以下非法的
赋值
语句是?
答:
3、在变量说明中,不允许连续给多个变量赋初值。 如下述说明是错误的
:
int
a=b=
c
=5 必须写为 int a=5,b=5,c=
5;
而赋值语句允许连续赋值。4、注意赋值表达式和赋值
语句的
区别。 赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
求
c语言
试题及答案!急啊!
答:
3、设有
语句int
a=3;则执行
语句a+
=a-=a*a;后,变量a的值是( )A.3 B.0
C
.-12 D.94、若有 char
c[5]
={'c','d','\0','e','\0'};则执行语句printf("%s"
,c);
结果是( )。A.cd\0e B.'c''d' C.cd D.cd e5、已知
:int
a[
2][3]={1,2
,3,
4,5,6}, (*p)[3]=a;则...
大家正在搜
设有定义语句 int a
若有定义语句 int a
若有定义语句 int a10
int a[2][3]
若有定义int a 2 3
已知int a[10],*p=a
设有说明char w;intx
已知字符a的ascii是65
int a[10]={10*1}
相关问题
C语言赋值表达式问题:若定义有语句:int a=3, b=2...
求c语言高手解设有语句:int a=3;执行语句a+=a-=...
以下合法的C语言赋值语句是?A.a=b=58 B.k=int...
C语言:a=3,a+=a-=a*a,求a
问:求大神解决C 程序的这道题目 ?已知有声明int a=3...
C语言问题
C语言的数组问题,若有定义:int a[2][3];以下选项...
C语言中这条语句x=(a=3*5,a*4),a+5;的结果x...