C語言這個F函式再指標C語言指標問題

2021-03-06 00:28:57 字數 3227 閱讀 6018

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,因...