相关疑难解决方法(0)

C:查找数组中的元素数量[]

在C中:在将结构发送到函数后,如何找到结构数组中的元素数?

int main(void) {
  myStruct array[] = { struct1, struct2, struct3, struct4, struct5, struct6 };
  printf("%d\n", sizeof(array));
  printf("%d\n", sizeof(array[0]));
  f(array);
}
void f(myStruct* array) {
  printf("%d\n", sizeof(array));
  printf("%d\n", sizeof(array[0]));
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,main中的printf显示的结果与f中的printf不同.我需要知道数组中有多少元素.

c arrays pointers

14
推荐指数
2
解决办法
4万
查看次数

C中sizeof运算符的参数

我知道当我们sizeof在数组名称上使用operator时,它以字节为单位给出数组的总大小.例如

int main(int argc, const char * argv[]) {
    int a[][5] = {
        {1,2,3,4,5},
        {10,20,30,40,50},
        {100,200,300,400,500}
    };

    int n=sizeof(a);
    printf("%d\n",n);

}
Run Code Online (Sandbox Code Playgroud)

它给出了数组的60输出15 elements.但是当我写作

int n=sizeof(*a);
Run Code Online (Sandbox Code Playgroud)

它给出20的输出是第一行的大小,而它是行*a0th元素的基地址0th,它的类型是指向整数的指针.并a指向第一行本身.为什么会这样?

c pointers sizeof multidimensional-array

4
推荐指数
1
解决办法
182
查看次数

标签 统计

c ×2

pointers ×2

arrays ×1

multidimensional-array ×1

sizeof ×1