我有一个数组,每个单元格里都有一个数组。例如,大数组被称为arr
:
int a[3] = {3, 2, 1};
int b[2] = {2, 1};
int *arr[2] = {a, b}
现在的问题是,如果我想要打印大数组里的小数组。
这是我的代码:
#include <stdio.h>
void printArr(int arr [], int n)
{
for (int i = 0 ; i < n ; i++)
{
printf("%d ", *(arr + i));
}
printf("\n");
}
int main()
{
int a[5] = {1, 8, 4, 2, 0};
int b[3] = {1, 4, 2};
int *arr [2] = {a, b};
int n = 0;
for (int i = 0 ; i < 2 ; i++)
{
printArr(*(arr + i), n);
}
}
输出应该是这样的:
1 8 4 2 0 1 4 2
但是我无法获取每个数组的大小,因为
sizeof(*(arr + i)
只会给我返回4,这是指针(数组名称)的大小,而不是整个数组本身的大小。
那么我该怎么办呢?谢谢!
sizeof(arr[i])/sizeof(arr[i][0])
? - avmohansizeof(arr[i])/sizeof(arr[i][0])
返回1... - Amitsizeof(arr[i])/sizeof(arr[i][0])
可行。 C语言不存储数组大小。因此,最好的办法是使用结构体,例如struct {int *arr; int size;}
,并创建这样结构体的数组。 - avmohanint a[6] = {<数组大小>, 2,3,4,5}
- cppcoder