面試題 指標 void 通用指標

2021-08-28 03:33:03 字數 1580 閱讀 3944

返回目錄:

問題:

問:函式中的void和指標中的void*有什麼區別?

答:在函式中的void是表示無型別或無返回型別。void指標是通用指標,用來存放任何資料型別的引用。

分析:

void真正發揮的作用在於: 

1.對函式返回的限定。

2.對函式引數的限定。 

《函式返回值》 《函式名》(引數1,引數2,引數3,.......)

------------

int sum(int a,int b)

其中第乙個int是返回值 就是別的函式呼叫此函式時這個函式給他的乙個值。

1.如果呼叫時不需要返回值,則函式寫為void sum(int a,int b),此時函式沒有返回值。

如果不需要引數,則int sum(void)《或者int sum()》,此時void的意義為空,就是沒有引數的意思。

3.如果都不要,則為void sum(void);《或者void sum();》

4.main()

void的作用:

1.對函式返回的限定,當函式不需要返回值時,用void限定,如void fun();

2.對函式的引數的限定,當函式不需要接受引數時,用void限定,如int fun(void)

void指標的作用:

1.函式返回值是任意型別的指標,如void *fun();

2.定義函式指標pfun,如void(*pfun)(),如果該函式指標指向這類函式(即void函式),例如:

void fun()//這類函式

void main()

3.void指標不能復引用,也就是不能取得它指向的位址的內容。

void *pvoid;

int *pint;

printf("%d",*pint);//正確

printf("%d", *pvoid);//錯誤

由於pint是整型變數指標,解引用取得該指向位址的內容是整型的,知道從第一位元組到第四個位元組的記憶體,而且從低到高儲存整數的32補碼。

而pvoid是指向還不知道資料型別的位址的通用指標,復引用取得的內容不清楚是什麼資料型別,內容占用的記憶體多大都不清楚。

擴充套件知識:double資料型別復引用是從第一位元組到第八位元組的一塊記憶體,從低到高儲存double數的浮點數符號位、階符、階碼和尾數。

問題:

問:下面**中哪個地方是錯誤的

#include

using namespace std;

void main()

答:

#include

using namespace std;

void main()

問題:

問:關於通用指標與解引用的解決問題,以下**哪些語句是錯誤的?

void main()

面試題 指標

一 指標 1 利用指標實現兩數交換 include using namespace std void swap1 int p,int q void swap2 int p,int q void swap3 int p,int q void swap4 int p,int q void swap5 i...

面試題 關於指標

面試題 下列c 程式會在哪一行崩潰?struct s main 分析 int p s.i時,一直到p 0 4,p 1 3的時候,p始終等於 s.i。s.p p 建立了如下的關係 s.p存了p的值,也即 s.i,s.p 1 相當於 s.i 1 即s.i的位址加1.也就是s.p.s.p 1 和s.p其實...

面試題 指標 引用

返回目錄 問題 問 引用與指標有什麼區別?答 1.引用必須初始化,指標可以不用。2.引用初始化以後就不能被改變 即只能初始化一次,始終只指向指定的物件 而指標可以改變所指向的物件。3.不存在指向空值的引用,而指標可以指向乙個空值,即空指標。4.因為引用不能指向空值,這意味著使用引用之前不需要測試其合...