C語言筆記系列 六 指標

2021-07-15 04:59:59 字數 1464 閱讀 9957

指標的值是位址,大多系統內部由無符號整數表示,但它是一種新的資料型別,不是整數型別。

int n=20;

printf("%d

%p",n,&n);//分別輸出值和位址

//四種宣告等價

intsum(int *a,int n);

intsum(int *, int );

intsum(int a,int n);

intsum(int ,int );

//定義只有兩種,名稱不可省略

//變長陣列允許動態分配儲存單元

//二維變長陣列,兩種宣告等價

intsum(int r,int c,int a[r][c]);

intsum(int ,int

int a[*][*]);

int *p; //p是指向int值得指標

int *pp[2]; //pp是陣列,由兩個指標組成的陣列,指標是指向int值,可以用它來定義不規則陣列。

int(*pa)[2]; //pa是指標,是指向兩個int值陣列的指標

int **p2; //p2是指標,指向指標的指標

//a1表示第一行陣列的位址,a1[0]表示第一行第乙個元素的位址;

//a1+1表示第二行陣列的位址,a1[0]+1表示第一行第二個元素的位址;

int a1[3][2];

pp[0] =p = &a1[0][0]; 

pp[1] =p = a1[0];

int a2[2][3];

pa = a1; //pa = a2是錯誤的

p2 =&p;

p2 =&a1[0];

char s = "i love";

char *p = "i love";

//主要區別是s是個常量,p是個變數,只有指標可以使用自增運算子,其他使用差不多。

int *const p = a; //a是陣列

p = 1; //允許

p = &a[1]; //錯誤,只可改資料不可改位址

const

int *p = a; //上面兩種都不允許使用

structitem, *p;

p = &item;

// p->f, (*p).f, item.f

void toup(char *);

void *tolow(); //指標函式,是返回某一型別指標的函式

void (*p)(char *); //函式指標,是只能指向接受char*引數返回為void函式的指標

p = toup; //toup是函式toup()的位址

(*p)("aa");

p("aa");

C語言筆記 六 指標 一

記憶體模型 常量區棧區 區常量指標 和 指標常量 根據指標指向的位置的不一樣,指標也是有型別。指標定義和使用 include intmain int p 定義乙個int 型別指標,p只能指向int型位址 指標在函式中的簡單應用 用指標在函式中修改變數的值 include void fun1 int ...

C語言隨筆(六)指標

指標,就是指記憶體位址,指標變數是用來存放記憶體位址的變數,不同型別的指標變數所占用的儲存單元長度是相同的,而存放資料的變數因資料的型別不同,所占用的儲存空間長度也不同。有了指標以後,不僅可以對資料本身,也可以對儲存資料的變數位址進行操作。定義指標 如下 int a 100 int p 定義乙個整型...

C語言指標系列三 指標運算本質

c語言指標系列三 指標運算本質 對於如下的宣告 int arr int p p arr 儘管最後乙個語句看起來是將乙個指標賦值為陣列名,但c語言中並不存在指向陣列的指標,日常說某某個指標指向了陣列只不過是一種習慣,並不是說真的有乙個陣列型的指標指向了陣列。事實上,如上面的程式段,因為arr是乙個in...