C語言基礎之指標續

2021-06-27 12:28:09 字數 1898 閱讀 9949

一、指標

(1)、指標與陣列

#include int main()

; int *p;

//下面兩句其實是等價的,陣列名本身就代表陣列位址

p=ages;

p=&ages[0];

printf("p---%p\n",p);//指標指向陣列首元素,因此列印的是陣列位址

printf("*p---%d\n",*p);//指標指向陣列首位址,其指向位址中的值就是ages[0]

/*若指標是int型別,加1代表加了4個位元組。

若指標是char型別,加1代表加了1個位元組。

*/printf("p---%p\n",p+1);//ages[1]的位址

printf("*p---%d\n",*(p+1));//ages[1]的值

//遍歷陣列

for(int i=0;i

1.陣列元素的訪問方式

1>陣列名[下標] 如ages[2]

2>指標變數名[下標] 如p[2]

3>*(p+i)

2.指標變數的+1,究竟加多少,取決於指標的型別

#include void test(int *array)

int main()

; /*

ages[1]的位址傳給指標array,那麼array+2,就是從ages[1]開始往後推8個位元組

就是ages[3]的值

*/test(&ages[1]);

/*ages[2]的位址傳給指標array,那麼array+2,就是從ages[2]開始往後推8個位元組

變數a在陣列後面,所以array+2此時指向的是變數a

*/test(&ages[2]);

printf("ages[3]的位址是---%p\n",&ages[3]);

printf("a的位址是---%p\n",&a);

return 0;

}

2、指標和字串

c語言陣列是放在棧記憶體中的。所以用字元陣列定義的字串是存放在棧記憶體中的變數。而字元指標定義的陣列是存放在常量區中的,是乙個常量,方便下次使用。

#include int main()

總結:

1.定義字串的兩種方式

1>利用陣列

char name="it";

特點:字串裡面的字元是可以修改的

使用場合:字串的內容需要經常修改

2>利用指標

char *name="it";

特點:字串是乙個特常量字串,裡面的內容不能修改

使用場合:字串的內容不需要修改,且這個字串經常使用

#include int main()

; char name1[2][10]=;

printf("%s\n",name[1]);

printf("%s\n",name1[1]);

//輸入字串,這就用字串陣列了

char name2[10];

printf("請輸入乙個姓名\n");

scanf("%s",name2);//%s就是從name2這個位址開始乙個乙個輸入

printf("姓名是--%s\n",name2);

return 0;

}

3、返回指標的函式

#include #include char *test();

int test1(char *);

int main()

//返回指標的函式

char *test()

//返回字串位元組數

int test1(char *c)

C語言基礎之指標

一 指標 1 指標就是存放位址的變數。乙個指標變數占用4個位元組。int pa int pa 2 指標型別 取位址 解引用 1 指標型別 int pa pa,pa int pa int pa 語義 pa是乙個指標,該指標指向乙個int型的資料,即pa存放乙個int型資料的位址。int pa,pb p...

C語言基礎之指標運算

指標的加法 define crt secure no warnings include int main 宣告乙個char型別的陣列 char p ac 指標p為char 型別 printf p p n p printf p 1 p n p 1 輸出指標p 1的結果 int ai 宣告乙個int型別...

指標 C之精華 續1

1 先取 p值,後使p值加1 p 與 p 等價。和 同優先順序,結合方向自右而左 2 先使p值加1,後取 p值 p 1 用陣列名做函式引數 c編譯時將形參陣列名 作為指標變數來處理的,所以以下2個函式的定義是等價的 f int arr int n f int arr,int n 2 多維陣列與指標 ...