例題:編寫程式把乙個陣列中的所有內容前後顛倒.比如陣列中原有內容是1 2 3 4 5;顛倒後內容是5 4 3 2 1;要求使用指標編寫程式;
//顛倒陣列內容
#include
void
main()
,num =0;
int*p_start = arr,
*p_end = arr +4;
while
(p_start < p_end)
for(num =
0;num <=
4;num++
)printf
("\n");
}
//在函式裡實現陣列內容的前後顛倒1
#include
void
reverse
(int arr,
int size)
}void
main()
,num =0;
reverse
(arr,5)
;for
(num =
0;num <=
4;num++
)printf
("\n");
}
注:讓被呼叫函式使用呼叫函式的陣列,可通過陣列作形參的方法.
實現跨函式使用儲存區方法;陣列作形參(本質由指標實現)、使用靜態區域性變數;
//被呼叫函式使用呼叫函式儲存區,使用指標型別形參
#include
void
reverse
(int
*p_num,
int size)
//被呼叫函式
}void
main()
//呼叫函式
,num =0;
reverse
(arr,5)
;for
(num =
0;num <=
4;num++
)printf
("\n");
}
//跨函式使用靜態區域性變數
//呼叫函式使用被呼叫函式靜態區域性變數,使用指標型別的返回值
#include
int*
func
(void
)void
main()
總結:實現跨函式使用儲存區均需要通過指標才能實現.
注:跨函式使用儲存區必須遵守生命週期的規則,生命週期不允許情況是不能跨函式使用儲存區的.
練習:編寫函式把主函式中的兩個變數內容交換.
//交換儲存區內容練習
#include
void
swap
(int
*p_num,
int*p_num1)
intmain()
宣告指標變數的時候可以使用const關鍵字
如果const關鍵字寫在型別名稱前就表示:
不可以通過這個指針對**儲存區進行賦值,
但是可以對指標本身的儲存區進行賦值.
#include
void
main()
當跨函式使用儲存區的時候,如果儲存區的擁有者不希望別的函式修改自己的儲存區,
就應該採用上述辦法在宣告指標的時候加const關鍵字.
注:當跨函式使用儲存區的時候,盡量在指標宣告前使用上述方法增加const關鍵字.
#include
//const int *p_num,加const就不會修改陣列裡面的數
void
print
(const
int*p_num,
int size)
printf
("\n");
}void
main()
;print
(arr,5)
;}
如果宣告指標時把const關鍵字加在指標變數名稱前,
就表示不可以對指標本身的儲存區做賦值,但是可以對**儲存區做賦值.
#include
void
main()
C語言指標整理
記憶體是按照位元組編址的,所以它的定址單位是位元組 byte 而乙個位元組又有是由8位 bit 的0或1組成。所以這樣的話4gb記憶體的定址空間就從0x00000000到0xffffffff,總共有 明白記憶體位址後,指標實際上就是記憶體位址,指標變數則是儲存指標的變數,也即是儲存了記憶體位址。下面...
整理C語言指標
指標的靈活運用使得c語言更加強大,指標是c語言中十分重要的部分,可以說指標是c語言的靈魂。當然指標不是萬能的,但沒有指標是萬萬不能的,有些操作沒有指標是辦不到的,如動態記憶體分配。鑑於學習指標的必要性,好好整理一下哈哈哈 1 指標 我們使用的計算機記憶體為8g,系統為了更好地管理我們的記憶體,就為記...
c語言指標知識整理
謹以此文送給初入程式設計坑的女票梁童鞋。目錄 基本概念 位址和指標的關係 指標操作 指標運算 指標與陣列 指標與一維陣列 指標與二維陣列 指標陣列 指標 是指向另一變數在記憶體中位置的位址。在程式中定義乙個變數,進行編譯時就會給這個變數在記憶體中分配乙個位址,通過訪問這個位址即可以找到所需變數,這個...