A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

利用数组名访问二维数组
#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;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马