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\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語言題庫----指針