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)

麻烦高手解答,请附带讲解

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