C语音题目
来源:百度知道 编辑:UC知道 时间:2024/05/06 23:35:09
1.假设某变量有如下语句,则通过指针变量c得到a的数值的方式为 A? 。
int a,*b,**c;
b=&a; c=&b;
A. 指向运算 B. 取地址运算 C. 直接存取 D.间接存取
7.若有定义:int a[9],*p=a; 下面不能表示a中第二个元素地址的表达式是 C? 。
A.p+1 B.a+1 C.a++ D.++p
10. 设有“char s[]=”Program”, *p=s;”,则以下叙述中正确的是______。
A.数组s的内容与指针变量p中内容相同
B.数组s的长度与strlen(p)的值相等
C.p[5]的值等于s[5]的值
D.sizeof(s)等于sizeof(*p)
麻烦高手解答,请附带讲解
int a,*b,**c;
b=&a; c=&b;
A. 指向运算 B. 取地址运算 C. 直接存取 D.间接存取
7.若有定义:int a[9],*p=a; 下面不能表示a中第二个元素地址的表达式是 C? 。
A.p+1 B.a+1 C.a++ D.++p
10. 设有“char s[]=”Program”, *p=s;”,则以下叙述中正确的是______。
A.数组s的内容与指针变量p中内容相同
B.数组s的长度与strlen(p)的值相等
C.p[5]的值等于s[5]的值
D.sizeof(s)等于sizeof(*p)
麻烦高手解答,请附带讲解
1)
C为二级指针,b=&a,c=&b,把b当中保存的内存地址赋值给二级指针变量C,C访问a时先到指针b中找到b所保存的内存地址,然后根据此地址找到变量a
2)c
a为数组的首地址,是个常量,不能改变的,所以无法使用自增自减运算,但这样写也可以: *(a+1)这表示是第二个元素的值
a++ 相当于a=a+1,这样a的值就会改变,即数组的首地址发生了改变
10)
选C
A中,S内容为字符串,P中内容为内存地址,只是保存S的首内存地址,故错
B中,S的长度比指针P多一位,因为结束时有结束标志,就是'\0'
D中,S的长度为整个字符串的长度,(*p)仅表示一个字符的长度,就是char的长度,为1