我很难理解如何对二维数组中的每个元素初始化和添加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;
}