網上關於c語言中指針的理解,真的是1000我的中有1000個哈姆雷特,如今講下關於我整理的c語言對於指針的理解數組
int array[10];定義一個數組函數
*(array +K)= &arrar[0] +K;k 是偏移量spa
鑑於菜鳥教程的實例:最主要的仍是區分c語言中的實參和形參的區別:指針
1. 形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。所以,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變量。
2. 實參能夠是常量、變量、表達式、函數等,不管實參是何種類型的量,在進行函數調用時,它們都必須具備肯定的值,以便把這些值傳送給形參。所以應預先用賦值,輸入等辦法使實參得到肯定值。
3. 實參和形參在數量上,類型上,順序上應嚴格一致,不然會發生類型不匹配」的錯誤。
4. 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 所以在函數調用過程當中,形參的值發生改變,而實參中的值不會變化。
實參(argument):
全稱爲"實際參數"是在調用時傳遞給函數的參數. 實參能夠是常量、變量、表達式、函數等, 不管實參是何種類型的量,在進行函數調用時,它們都必須具備肯定的值, 以便把這些值傳送給形參。 所以應預先用賦值,輸入等辦法使實參得到肯定值。
形參(parameter):
全稱爲"形式參數" 因爲它不是實際存在變量,因此又稱虛擬變量。是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數.在調用函數時,實參將賦值給形參。於是,必須注意實參的個數,類型應與形參一一對應,而且實參必需要有肯定的值。
形式參數:形參是函數被調用時用於接收實參值的變量。
根據實際須要無關緊要。沒有形參時,圓括號也不可省;多個參數之間應用逗號分隔。參數包括參數名和參數類型
菜鳥教程的例子:
#include<stdio.h>intmain(){intvar = 20; /* 實際變量的聲明 */int *ip; /* 指針變量的聲明 */ip = &var; /* 在指針變量中存儲 var 的地址 */printf("Address of var variable: %p\n", &var); /* 在指針變量中存儲的地址 */printf("Address stored in ip variable: %p\n", ip); /* 使用指針訪問值 */printf("Value of *ip variable: %d\n", *ip); return0; }
結果:
Address of var variable: bffd8b3c Address stored in ip variable: bffd8b3c Value of *ip variable:20
對於交換兩個變量不成功的語言,由於TM的就是傳遞了形參,也就是在生存期內的實參的副本,實際並無發生任何改變,*p使用指針變量訪問值
#include<stdio.h>intmain(){intvar = 20; /* 實際變量的聲明 */int *ip; /* 指針變量的聲明 */ip = &var; /* 在指針變量中存儲 var 的地址 */printf("Address of var variable: %p\n", &var); /* 在指針變量中存儲的地址 */printf("Address stored in ip variable: %p\n", ip); /* 使用指針訪問值 */printf("Value of *ip variable: %d\n", *ip); return0; }code