c語言高階 指標概述

2021-08-20 09:09:46 字數 1227 閱讀 6891

1、指標也是一種變數,占有記憶體空間,儲存記憶體位址

2、*p操作記憶體

3、指標變數和它指向的記憶體塊是兩個不同的概念

char *getstr81()

void main()

【常見錯誤】直接向空指標中拷貝資料(沒有事先分配記憶體)

char *p1 = null;

strcpy(p1, "abcdefg");

//報錯,記憶體非法寫入

當指標申明為null空指標時,編譯器將其值設為0x0,這個記憶體位址收到作業系統控制和保護,因此不能進行修改,必須先分配記憶體後才能進行修改。

1、指標間接賦值成立的三個條件

2、一級指標的間接賦值

//條件1

int a = 10;

int *p = null;

//條件2

p = &a;

//條件3

*p = 30;

printf("a: %d \n", a);//輸出為a:30

3、二級指標的間接賦值

char *p1 = null;

char **p2 = null;

p1 = 0x11;

p2 = 0x22;

p2 = &p1;

*p2 = 100;

【引申】n級指標可以給n-1級指標間接賦值

4、使用指標做函式引數實現模組封裝

int  getmem3(char **myp1, int *mylen1,  char **myp2, int *mylen2)

int main()

printf("p1:%s \n", p1);

printf("p2:%s \n", p2);

if (p1 != null)

if (p2 != null)

printf("p1:%d \n", p1);

system("pause");

return ret;

}

C語言 高階指標

import import myfunction.h 巨集後面不要加分號 define kimagewidth 200 define kimageheight 200 有引數的巨集 define kmax a,b a b a b 加上括號 define kmul a,b a b define and...

C語言高階指標 1

c語言的指標是c語言這門語言的精華所在,當然也是讓很多人詬病的地方。指標是什麼?有這麼一句話 對於錘子來說,一切都是釘子。那麼換句話講指標,即 對於指標來說,一切都是位址 記憶體是由乙個個記憶體單元構成的,每個記憶體單元都有自己的位址。而指標就是用來存放這些位址的。凡是可以用指標來儲存的變數,在指標...

c語言指標高階(二)

首先這裡強調乙個問題就是假設我現在知道乙個記憶體位址0xaa11 我怎樣將這個位址直接給乙個指標呢?首先這樣是沒有語法錯誤的 確實也是這樣定義的 但是位址我們是不能隨便規定的 這個主要用於程式開發中我們向特定的位址 我們已知的位址 去寫入資料 例如 通過i2c介面傳送到mcu乙個位址資料 unsig...