指標的使用方法 三

2021-12-29 16:37:46 字數 2154 閱讀 7526

下面介紹指標與陣列的關係

指向一維陣列的指標

指向多維陣列的指標

指向字串的指標

1.指向陣列元素的指標變數的定義方式:型別   *指標變數名

例如:int * p;

2.陣列名的含義:陣列名代表陣列的首位址。

3.指向陣列元素的指標變數的賦值:指標變數= 陣列某一元素的位址(通常是首位址)

例如:  int  a[10],*p;

p=a;或p = &a[0];

圖示:

指向陣列的指標的加減運算

p++;//p指標移動p所指向型別的位元組,p所指向的是int型陣列,所以p移動兩個位元組指向a[1]

引用乙個陣列有兩種方法:

1.下標法:如a[i]

2.指標法:如*(a+i)或*(p+i)

若有陣列及指標定義   int  a[5] ,*p = a;

下標法:a[0]   a[1]   a[2]   a[3]   a[4]

指標法:*p      *(p+1)  *(p+2)  *(p+3)   *(p+4)

p[0]  p[1]     p[2] p [3]  p[4] 

*a    *(a+1)  *(a+2)*(a+ 3)  * (a+4)

通過陣列名計算陣列元素的位址,找出元素的值

main()

int a[10];int i;

for (i = 0;i<10;i++) 

scanf("%d",&a[i]);

printf("\n");

for(i = 0 ;i<10;i++)

printf("%d",*(a+i));

用指標變數指向陣列元素:

main()

int a[10];

int *p,i;

for(i = 0 ;i<10;i++)

scanf("%d",p++);

printf("\n");

for(p = a;p

printf("%d",*p);

注:p++合法,但a++不合法(a是陣列名,代表陣列首位址,是常數字址)

要注意指標變數的當前值

p++;(或p+=1;)

p將指向下乙個元素,即a[1].

x = *p++;//不建議使用

*與++是同級運算,等價於先計算*p,為x賦值a[0],再++

*(p++)與*(++p)

*(p++)是先取*p的值,後使p+1;

*(++p)是先使p加1,後取*p的值

(*p)++;

表示p所指向的元素值加1(即a[0]++),而不是指標值加1.

example:

main()

int a[3],*p =a;

a[0] = 10; a[1] = 20;a[2] = 30;

printf("%d/t",*p++);

printf("%d\n",*++p);

輸出結果:10        30

main()

int a  = ;

int *p = a+3;

printf("%d,%d,%d\n",*p,*(p+1),*p+3);

結果:4,5,7

多維陣列的指標

1.定義引用形式與指向一維陣列的指標類似

例如:int  a[3][4],*p

p=&a[2][3];

2.行列位址表示

若有定義:int a[3][4];

下圖**中的數字表示每個元素的位址值。

指標與字串

1.字串的表示形式

用字元陣列實現:char  string = " i love china!";

用字元指標實現:字元指標變數的定義 :char   *p;

char *s = "i love china!" ;//初始化s

字串都以/0為結束標示符,所以實際長度為字串長度+1.

指標的使用方法 三

下面介紹指標與陣列的關係 指向一維陣列的指標 指向多維陣列的指標 指向字串的指標 1.指向陣列元素的指標變數的定義方式 型別 指標變數名 例如 int p 例如 int a 10 p p a 或 p a 0 圖示 指向陣列的指標的加減運算 p p指標移動p所指向型別的位元組,p所指向的是int型陣列...

函式指標的使用方法

如果我們在程式中定義了乙個函式 int max int x,int y 定義max函式 那麼函式名max就是呼叫這個函式的入口位址。就如同定義乙個陣列,這個陣列名就是這個陣列的首位址。既然是位址,就可以使用乙個指標來指向它。對應於int max int x,int y 我們定義的函式指標如下 int...

awk的使用方法 三

常用的awk內建變數 序號 名稱 描述 1 argc 命令列引數的數目。2 ar 包含命令列引數的陣列。3 argind 當前被處理的檔案的ar 的index 從0開始算 4 binmode 在non posix系統中,檔案的i o指定使用 binary 模式。5 convfmt 數字轉換格式 預設...