1. 程式人生 > >C語言指針的問題

C語言指針的問題

問題 AR 順序 存儲 指針變量 order PC 包括 b-

網上關於c語言中指針的理解,真的是1000個人中有1000個哈姆雷特,現在講下關於我整理的c語言對於指針的理解

int array[10];定義一個數組

*(array +K)= &arrar[0] +K;k 是偏移量

鑒於菜鳥教程的實例:最主要的還是區分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; }

C語言指針的問題