簡單來說,指標是乙個儲存計算機記憶體位址的變數。所有的指標都儲存了記憶體位址。它們的型別只在取值時起作用。指標在c
語言中是個十分重要的概念,可以搜尋相關資料進行深入學習,也可以參考 c語言指標簡介 簡單了解。
c語言函式引數傳遞有兩種方式,一種是傳值呼叫,一種是傳址呼叫。那麼如果指標作為引數,應該怎麼傳遞指標?可以參見下面的例子。
/* 編譯器版本:
*/#include /* 錯誤版本,指標p是指標str的乙個拷貝,所以這種方法僅初始化指標p,而對指標str無影響 */
void allocate_wrong(char *p,int size)
void allocate(char **p, int size)
int main(void)
/*輸出結果:
1bf88c
01bf7b4
1bf88c
hello world!
*/
從中我們可以看出,c語言中傳遞指標變數時,需要用到二級指標。示例中char **p = &str;
表明p是乙個二級指標,*p
存放的是指標str
的位址。因此對*p
進行操作,也就是對str
進行操作。
修改普通型別變數(如int
、char
等),函式引數需要用一級指標;
修改指標變數,函式引數需要用二級指標;
以上都是c語言裡面的操作,當然c++可以用引用(例如int *&p = str;
)。
c語言中的二級指標(雙指標)
c語言陣列引數與指標引數
c語言傳遞引數
1.標準資料型別,int char 等。如果c傳遞的是單個資料型別,會在被調函式中重新建立乙個物件。所以,無論我們在被調函式中怎麼修改,主調函式的值不會發生變化。2.陣列。當我們傳遞的引數是乙個陣列時,c傳遞的是陣列首元素的位址。所以當我們在被調函式中做修改了,主調函式的值也會變化。3.自定義資料型...
關於C語言傳遞引數的問題
要求 編寫乙個函式,將rgb資料顯示到tft彩屏上,rgb資料為565格式,平台 stm32f030 lcd st7735s 編譯平台 mdk5.14 對於這個一般的來說很多人會這麼寫 void lcd draw rgb u16 x,u16 y,u16 x size,u16 y size,u16 p...
Go語言傳遞變長引數
如果函式的最後乙個引數是採用.type的形式,那麼這個函式就可以處理乙個變長的引數,這個長度可以為 0,這樣的函式稱為變參函式。func myfunc a,b,arg int 這個函式接受乙個類似某個型別的 slice 的引數 詳見第 7 章 該引數可以通過第 5.4.4 節中提到的 for 迴圈結...