黑马程序员技术交流社区

标题: 利用数组名、普通指针、二维数组指针访问二维数组。 [打印本页]

作者: wangchao1992    时间: 2015-8-12 15:34
标题: 利用数组名、普通指针、二维数组指针访问二维数组。
利用数组名访问二维数组
#include <stdio.h>
int main(int argc, const char * argv[]) {
    int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
    for (int i=0; i<3; i++) {
        for (int j=0; j<4; j++) {
            //a+1    第二行的首地址
           //   *(a+1)== &a[1][0]   第二行第一个元素的首地址
         //(*(a+1)+1)==&a[1][1]  第二行第二个元素的地址
        //    * ( * ( a + 1) + 1 )==a[1][1]  第二行第二个元素的值
            printf("%d\t",*(*(a+i)+j));

        }
        printf("\n");
    }  
    return 0;
}
利用普通指针访问二维数组
#include <stdio.h>
int main(int argc, const char * argv[]) {
    int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
    int *p = a;//定义普通指针
    for(int i =0;i<12;i++){
          //数组在内存中存储是连续的
          printf("%d\t",*(p+i));
        }
    return 0;
}
利用二维数组指针访问二维数组
include <stdio.h>
int main(int argc, const char * argv[]) {
    int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
    //定义二维数组指针
    //二维数组指针可以替代数组名去使用
    int (*p)[4] = a;
   
    for (int i=0; i<3; i++) {
        for (int j=0; j<4; j++) {
            //遍历数组
            printf("%d\t",*(*(p+i)+j));
        }
        printf("\n");
    }
   
    return 0;
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2