程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 指針的使用方法【三】

指針的使用方法【三】

編輯:關於C語言

 

下面介紹指針與數組的關系

 

指向一維數組的指針

 

指向多維數組的指針

 

指向字符串的指針

 

 

 

 

 

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<(a+10);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[]  = {1,2,3,4,5};

 

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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved