C语言 初始化二维数组中的n个整数



我很难理解如何对二维数组中的每个元素初始化和添加1到n整数。

例如,如果n = 5

arr[5][5] = { {1, 2, 3, 4, 5}, {1, 2, 3, 4, 5} };

我试过了

for (int i = 0; i < sizeof(arr); i++) { for (int j = 0; j < sizeof(arr[i]); j++) { product[i][j] += 1; } }

这应该给你一个起点:

#include <stdio.h>
#include <stdlib.h>
#define LENGTH 5
int main(int argc, char** argv) {
    int arr[LENGTH][LENGTH] = { { 0 } };
    for (int i = 0; i < LENGTH; i++) {
        fprintf(stderr, "%p contains %d elementsn", (void *) arr[i], (int) sizeof(arr)/sizeof(*arr));
        for (int j = 0; j < LENGTH; j++) {
            arr[i][j]++;
            fprintf(stderr, "%d ", arr[i][j]);
        }
        fprintf(stderr, "n");
    }
    return EXIT_SUCCESS;
}

请注意,您只能使用sizeof(foo)/sizeof(*foo)技巧,因为foo在堆栈上。对于通过指针动态分配的内存,您不能这样做。

在for循环中使用了错误的条件Sizeof (arr)给出5(rows)*5(col)*4(integer size) = 100;

因此,for循环导致未定义的行为Sizeof (arr[0]) = 0;

你必须使用

rows_count=size(arr)/sizeof(arr[0]);
col_count=sizeof(arr[0])/sizeof(arr[0][0]);

代码

#include<stdio.h>
void main()
{
    int i,j;
    int arr[5][5]={{1,2,3,4,5},{1,2,3,4,5}};
    printf("Sizeof(arr) : %dn",sizeof(arr));
    printf("Sizeof(arr[0]) : %dn",sizeof(arr[0]));
    for (int i=0;i<(sizeof(arr)/sizeof(arr[0]));i++) 
    {
        for (int j=0;j<(sizeof(arr[0])/sizeof(arr[0][0]));j++) 
            arr[i][j] += 1;
    }
    for (int i=0;i<(sizeof(arr)/sizeof(arr[0]));i++) 
    {
        for (int j=0;j<(sizeof(arr[i])/sizeof(arr[0][0]));j++) 
            printf("%d ",arr[i][j]);
        printf("n");
    }
        printf("n");
}

如果我理解你的问题是对的,你想在你当前的数组arr[5][5] = { {1, 2, 3, 4, 5}, {1, 2, 3, 4, 5} }中每个元素加1 ?

:

#include <stdio.h>
#include <stdlib.h>
#define ROWS 2
#define COLS 5
void print_array(int arr[][COLS], int nrows);
int
main(void) {
    int row, col;
    int arr[ROWS][COLS] = {{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}};
    for (row = 0; row < ROWS; row++) {
        for (col = 0; col < COLS; col++) {
            arr[row][col] += 1;
        }
    }
    print_array(arr, ROWS);
    return 0;
}
void
print_array(int arr[][COLS], int nrows) {
    int row, col;
    for (row = 0; row < nrows; row++) {
        for (col = 0; col < COLS; col++) {
            printf("%d ", arr[row][col]);
        }
        printf("n");
    }
}

或者如果你真的想使用sizeof(),你可以这样做:

#include <stdio.h>
#include <stdlib.h>
#define ROWS 2
#define COLS 5
int
main(void) {
    int row, col;
    int arr[ROWS][COLS] = {{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}};
    int row_size, col_size;
    row_size = sizeof(arr)/sizeof(*arr);
    col_size = sizeof(*arr)/sizeof(**arr);
    for (row = 0; row < row_size; row++) {
        for (col = 0; col < col_size; col++) {
            arr[row][col] += 1;
        }
    }
    for (row = 0; row < row_size; row++) {
        for (col = 0; col < col_size; col++) {
            printf("%d ", arr[row][col]);
        }
        printf("n");
    }
    return 0;
}

相关内容

  • 没有找到相关文章

最新更新