1. 程式人生 > >C語言題庫----指針

C語言題庫----指針

指針 什麽 出錯 變量賦值 void 聲明 extern pan []

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\n",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沒有定義類型

C語言題庫----指針