1樓:匿名使用者
28f為傳值呼叫。所以f中的修改不影響main中變數的值。輸出的還是原始值。即
4,3,5
選d29
a=4b=**=&a
q=&b
w=q=&b
q=null
a *q=0 由於q已經賦值為null, 再對*q賦值會引起程式崩潰。 這個不對
b w=p 指標間賦值,正確。
c *p=a 也就是a=a 正確。
d *p=*w 也就是a=b 正確。選a
2樓:兄弟連教育北京總校
c語言中, 函式
名也稱為函式的指標,所以c語言中函式名就是一
個指標。
1,例如:
showmenu是乙個函式名,可以看到他的值是乙個位址。
&showmenu是對函式取位址,指向和showmenu同樣的位址。
可以看出,showmenu是占用乙個位元組的,而作為指標&showmenu卻占用四個位元組。
所以,函式名占用空間的。
2,函式指標
指向函式的指標包含了函式的位址,可以通過它來呼叫函式。宣告格式如下:
型別說明符 (*函式名)(引數)
其實這裡不能稱為函式名,應該叫做指標的變數名。這個特殊的指標指向乙個返回整型值的函式。指標的宣告筆削和它指向函式的宣告保持一致。
指標名和指標運算子外面的括號改變了預設的運算子優先順序。如果沒有圓括號,就變成了乙個返回整型指標的函式的原型宣告。
例如:void (*fptr)();
把函式的位址賦值給函式指標,可以採用下面兩種形式:
取位址運算子&不是必需的,因為單單乙個函式識別符號就標號表示了它的位址,如果是函式呼叫,還必須包含乙個圓括號括起來的參數列。可以採用如下兩種方式來通過指標呼叫函式:
x=(*fptr)(); x=fptr();
第二種格式看上去和函式呼叫無異。但是有些程式設計師傾向於使用第一種格式,因為它明確指出是通過指標而非函式名來呼叫函式的。下面舉乙個例子:
void (*funcp)(); void filefunc(),editfunc();
main() void filefunc()
void editfunc()
程式輸出為:
filefunc editfunc
3樓:
28) f的呼叫並不會改變abc的值,所以還是原值4,3,5 選d
29)q為null,不能取內容,所以*q=0是錯誤的,選a
c語言指標問題 10
4樓:51cto學院
記憶體對齊的緣故。
p_buf 作為乙個指標,
它的值是記憶體的某個位元組的位址。
如果想要把 p_buf 強制轉換版
成乙個 unsigned int*型別的指權針,需要滿足乙個必要條件,就是 p_buf 的值必須能夠被4整除。(之所以是4,是因為 unsigned int 是要佔4個位元組的)。
c語言指標陣列
5樓:千鋒教育
p是int型別指標,指向陣列a的第1個元素即乙個一維的陣列首位址所以p[1]相當於a[0][1]所以printf("%d\n",p[1]);
輸出2 。 int **pp =pa 是宣告了乙個指向pa的指標,而pa又是指向a首位址的int型別指標。pa指向的是a的第一維,pa[0] = a[0] ,pp[2][1]相當於a[2][1]而a陣列的[2]中只初始化了[2][0]位置的7,那[2][1]位置就是預設的值0,所以printf("%d\n",pp[2][1]);輸出0
6樓:匿名使用者
void main()
,,};
int *pa[3]=;
int *p=a[0];
int **pp=pa; //這句什麼意思??//定義了指向指標的指標變數
printf("%d\n",*a[1]);
printf("%d\n",*(*(a+1)+1));
printf("%d\n",*pa[1]);
printf("%d\n",p[1]); //為什麼輸出為2 ???//這裡應該是輸出了乙個位址
printf("%d\n",pp[2][1]);} // pp不是位址嗎,不加* 嗎?//指標指向陣列的首位址之後是可以當陣列名用的。
c 語言有函式過載嗎?
7樓:育知同創教育
標準c, 不支援函式過載。
函式過載是c++的概念。 不光是類的成員函式, 一般函式以及模板函式都是可以過載的。
c語言_access函式怎麼用
8樓:千鋒教育
函式名: access
標頭檔案:io.h(linux中為)
功 能: 確定檔案的訪問許可權,檢查某個檔案的訪問方式,比如說是唯讀方式、只寫方式等。如果指定的訪問方式有效,則函式返回0,否則函式返回-1。
用 法: int access(const char *filename, int amode);
int _access(const char *path,int mode) 。
9樓:金色潛鳥
這幾天問這個問題的人很多啊。
函式原型:
int _access( const char *path, int mode );
int _waccess( const wchar_t *path, int mode );
mode: 0 -- 檔案不存在; 或 2 -- 唯讀; 或4 -- 只寫; 或 6 -- 可讀寫。
*path -- 路徑,檔名。
程式例子:
#include
#include
#include
int main(int argc,char *argv )strcpy(namein,argv[1]);
// check for existence.
if( (_access( namein, 0 )) != -1 )return 0;}
10樓:匿名使用者
duanyan 斷言
c語言for迴圈再指,C語言FOR迴圈再指ELSE
31 這裡if後面 只有b 1 由於其後為 所以c 2已經不是if之內的了。這時再有乙個else 是無法配對的。內 於是編譯出容錯。選d 32 對於單純的外層迴圈。不包括內層與j相關的。每次迴圈x自加兩次,分別在內層迴圈的前面和後面。對於內層迴圈,每次j 0 1 2 3 當j為奇數時,及j 1 3時...
C語言指標函式替換字元
下面的程式可以把句子中所有的an都換成a。include main printf s n a 輸出字串要用 s 字串替換,需要兩層迴圈判斷 char replace char source,char sub,char rep 如果沒找到子串,下面複製source所指位元組到結果串 pc1 sourc...
C語言指標問題,C語言指標問題
這個演算法最後的時候 p和q都是指向a的,在最後這個時候a的結構是,q之前的是所有的除了版 之外權 的字元。q之後的都是原來a裡面的資料,對於這個時刻是髒資料。最後把q指向的那個位置賦值為 0可以在遍歷a的時候,不遍歷到髒資料,而這個時候p正好指向的就是 0,所以 q p 迴圈結束條件是 p 0,因...