C语言题库----指针

1.如果f是一个函数,请说明 f() 和f的意思。

f是函数的地址,f()是函数

2.怎样理解数组的下标运算?

先偏移,后取址。

3.int *p,*q; int a[]={10,20,30,40}; p=&a[0];  q=&a[3]; 请问q-p等于多少?

%p输出 为3

%d输出为12

4.请说明int aa(char s[])   和 int aa(char *p)的区别?

在使用上没有区别,s【】只是提醒声明的内容为数组

5.char *p,*q;  p=”xyz”;   q=p; 请问q=p; 这个赋值语句有没有复制内存中的字符?

没有

char p,q;    p=’a’;    q=p;  请问q=p; 这个赋值语句有没有复制内存中的字符?

有    pq为字符变量,不是指针

6.int a[]={1,2,3,4};  a++;上面的语句是否可行?如果不可行,请指出错误。

不可行,a为首元素的地址,不可以改变

7.int a[]={1,2,3,4}; int *p=a+1; p++; 上面语句是否可行?如果不可行,请指出错误。

可以

8.请问怎么打印出指针的地址?

printf("%p ",p);

9.int *p,**q,a=6; p=&a; q=&(&a); 请问上面的语句是否可行?如果不行,请指出错误。

不行,不能对变量取两次地址,地址不占用额外的内存空间

10.请问int *p; *p=10; 请问上述语句是否正确?如果错误,请指出错误。

不正确,*p没有指向的内容

11.请问int *p=NULL;的意义?

p没有任何指向

12.请问内存是在变量定义时分配的还是在变量赋值时分配的?

赋值的时候分配

13.char *p=”abcdef”; 请问p[3]是什么意思?

p向后偏移3个单位后间接引用

14.char *p=”abcdef”; float *pip=3.134;  请问上述语句是否正确?如果错误,请更正。

指针是地址变量

15.char *p=”abcd”; *p=’b’; 请问上述语句是否正确?如果错误,请说明原因。

不正确,不能改变字符串常量的内容

16.在一个文件里定义int a[10]; 在另一个文件里声明extern int a[];(没有指明长度) 是否可行?

17.char c[]=”abcdefg”; void fun(char ca[10]){}; 调用函数。 请问 &c 和&ca 是否相等?

实际参数和形式参数,地址不一样,但是内容一样

++ca 和&c[1] 是否相等?

不相等

请问 &ca[1] 和 &c[1] 是否相等?

不相等

请问c 和 &c 是否相等?

相等,c是字符串常量的首地址

18.int *p,a[10]={0}; for(p=&a[9];p>=&a[0];p--){*p=1;} 请问以上语句是否会出现问题?

不会

19.char *p=”abcd”; char c[]=”abcd”;   *p=’b’c[0]=’b’请问以上语句是否正确?

*p的内容指向字符串常量,是不能改变的,c【0】的内容可以改变

20.char a[][10]={“abcd”,”aaaa”};  char b[2][]={ “abcd”,”aaaa”};请问以上语句是否正确?

不正确,二维数组b没有定义类型

原文地址:https://www.cnblogs.com/wengqing/p/9409377.html