C语言二维数组的遍历(使用数组指针)

数组指针:本质上是一个指针,指向的是一个数组的地址。

注:例如数组 int arr[]={1,2,3,4,5}; 

int (*p1)[5]=&arr  此时p1指向的是一个数组,如果让p1+1,跳过的就是一个数组的大小。 

int *p2=arr;   此时p2指向的是数组arr首元素的地址,如果让p2+1,跳过的就是4个字节。 

数组指针的使用(使用数组指针遍历二维数组)

#include <stdio.h>
void printf1(int arr[3][5],int r,int c){
    int i=0;
    int j=0;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < c; ++j) {
            printf("%d\t",arr[i][j]);
        }
        printf("\n");
    }
}
void printf2(int (*p)[5],int r,int c){
    int i=0;
    int j=0;
    for (int i = 0; i < r; ++i) {
        for (int j = 0; j < c; ++j) {
            printf("%d\t",*(*(p+i)+j));
        }
        printf("\n");
    }
}
int main() {
    int arr[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    printf2(arr,3,5);
    return 0;
}

 

C语言中,我们可以使用两个for循环来遍历一个二维数组。其中一个for循环用于遍历二维数组的行,另一个for循环用于遍历二维数组的列。具体代码如下所示: ```c #include <stdio.h> #define ROW 3 #define COL 4 int main(void) { int arr[ROW][COL] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; } ``` 上述代码中,我们使用了两个for循环来遍历二维数组arr。其中外层for循环用于遍历二维数组的行,内层for循环用于遍历二维数组的列。我们使用printf语句来打印每一个二维数组元素的值,并在内层for循环结束后使用printf("\n")语句来换行。这样可以保证每一行的元素都在同一行输出。 另外,在C语言中,二维数组也可以被转换为一维数组进行遍历。可以使用一个for循环来遍历整个一维数组,并通过计算索引的方法来访问二维数组中的每一个元素。具体代码如下所示: ```c #include <stdio.h> #define ROW 3 #define COL 4 int main(void) { int arr[ROW][COL] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; int i, j; for (i = 0; i < ROW * COL; i++) { printf("%d ", *(*arr + i)); } return 0; } ``` 上述代码中,我们使用了一个for循环来遍历一维数组。我们使用两个指针来访问二维数组中的每一个元素。其中一个指针指向二维数组的首地址,另一个指针通过计算索引的方法来访问二维数组中的每一个元素。在输出每一个元素的值时,我们使用了两个解引用运算符(*),以便访问指针指向的元素的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值