用指针来表示二维数组的方法
生活随笔
收集整理的這篇文章主要介紹了
用指针来表示二维数组的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.類型說明
int *b;? //定義一個int型指針變量
int *p[3];? ?//定義一個int型指針數組的變量
int (*c)[3]? 和? int (*)[3]:? ?//定義一個指向3個整形數組的指針變量
?
2.初始化賦值
假設二維數組為:
int a[3][3]={{0,1,2},{3,4,5},{6,7,8}};
(1)用指針b表示二維數組時為:
int *b=a[0];? ?//將指針b指向a的首地址
二維數組的表示方式為:
a[i][j]=*(b+3*i+j) ;? ? //因為二維數組也是存放在連續地址上,只需要移動指針位置就可以了
(2)用指向整形數組指針的變量c來表示:
int (*c)[3]=a;? ?//將它指向a的首地址,數字中每一個單元代表a的每一行
二維數組的表示方式為:
a[i][j]=*(*(c+i)+j);? ? //*(c+i)+j表示a[i][j]地址,而*(*(c+i)+j);表示a[i][j]的值
(3)int型指針數組使用方式:
p是一個包含3個int型指針的數組,使用時,根據下標指向目標地址即可,如:
p[0]=&a[0][0];? p[1]=&a[0][1];? ? p[2]=&a[0][2] ;? ? ? //指向3個整形變量
?
3.具體代碼和使用結果
#include <stdio.h>int main(int argc, char const *argv[]) {int a[3][3]={{0,1,2},{3,4,5},{6,7,8}};int *b=a[0];int (*c)[3]=a;int i,j;int *p[3];p[0]=&a[0][0];printf("a\t\ta[0]\t\tb\t\t*p[0]\n");printf("%p\t%p\t%p\t%d\t\n",a,a[0],b,*p[0] );printf("arrays\tPointer\tPointer to the arrays:\n");for (i = 0; i <3; i++){for (j = 0; j < 3; j++){printf("%d\t%d\t%d\n",a[i][j],*(b+3*i+j),*(*(c+i)+j));}}return 0; }輸出結果為:
?
總結
以上是生活随笔為你收集整理的用指针来表示二维数组的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言中指针的使用方法
- 下一篇: C语言结构体的存储分配