C語言中和指標相關的四道題目

2021-09-07 22:36:39 字數 869 閱讀 8933

例子1.

void fun (int *x , int *y)

main()

結果2, 1

4, 3

注意main在呼叫fun函式時, y 和x故意寫顛倒了。

例子2. 

#include

void swap(int *p1, int *p2)

main()

如果在控制台輸入2 和 5

則輸出結果為 

5, 2

原因: 在呼叫swap函式時使用了職稱,所以在swap函式內部對p1,p2 所引用的內容值的修改,會影響外面的a和b的值。

例子3:

#include

void swap(int *p1, int *p2)

main()

和2不同, swap函式中的temp為指標,temp=p1使得temp指向了2,p1=p2使得p1指向了5,p2=temp使得p2指向了5.

但最後的列印結果仍為

2,5

原因是:雖然main中呼叫swap函式時使用了指標傳遞,但swap函式中的所有操作都是:將指標本身的修改,而沒有再次使用*操作符來修改「指標指向的內容值」

例子4:

#include

void swap(int *p1, int *p2)

main()

和2很像。但唯一不同是,temp定義為指標而不是普通變數。看上去似乎應該和2的輸出結果一樣,仍為

2,5 。

但實際執行時編譯器會報錯:非法的記憶體寫入。

原因是:temp為野指標,並沒有預訂指向**。如果指向系統區,則可能導致作業系統宕機。

如果temp在定義後,馬上給乙個初始值,就不會有問題了。

C語言中和指標相關的四道題目

例子1.void fun int x int y main 結果2,1 4,3 注意main在呼叫fun函式時,y 和x故意寫顛倒了。例子2.include void swap int p1,int p2 main 如果在控制台輸入2 和 5 則輸出結果為 5,2 原因 在呼叫swap函式時使用了職...

c語言中指標中 和 。的區別

比如有如下結構 typedef strut node listnode listnode p listnode malloc sizeof listnode 上面語句中涉及到 指標變數和結點變數兩個概念 變數p 是listnode 型別的指標變數 p的值指向某乙個結點的位址 p所指向的 listno...

C語言中 和 的區別

實際執行的時候沒有區別,中間的內容都是乙個字串 include include 比較兩個字串的內容,輸出相同的字元,第二個字串中 通配任意字元,直到兩字串有相同的字元 請按照要求實現下列函式 void findinstr const char pin,const char pkey,char pou...