经过下列语句int j,a[10],*p;定义后,下列语句合法的是() A .p=p+2 B .p=

经过下列语句int j,a[10],*p;定义后,下列语句合法的是()
A .p=p+2 B .p=a[5] c.p=a[2]+2 D.p=&(j+2)
请分别说出理由

int j,a[10],*p;

相当于
int j;
int a[10];
int *p;

所以
A. p=p+2是合法的,是指针运算;不过p没有初始化,其值不确定
B. p=a[5]不合法,a[5]是值不是指针,不能赋值给p
C. 同B
D. 不合法,(j+2)是表达式 ,不能取其地址
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-19
A是合法的但是没有初始化
B是a[5]是一个数,数不能赋值给一个指针
C也是一样
D是j没有初始化而且不能把表达式赋值给一个指针
所以选A