c - 不同的数组大小

标签 c sizeof

当我运行以下程序时,我得到不同的数组大小。我以不同的方式累了,但结果是一样的,io 可能做错了什么?

#include<stdio.h>

void array_size(char *a[])
{
    printf("Func Array Size: %d\n", sizeof(a));
}

int main()
{
    char *str_array[]={"one", "two", "three"};

    printf("Array Size: %d\n", (int)sizeof(str_array));

    array_size(str_array);

    return 0;
}

最佳答案

在函数main中,str_array是一个包含三个char *的数组。

函数array_size的参数a只是一个指针。编译器在调用 array_size 时不会动态传递数组长度信息。

一个指针的大小不等于三个 char * 指针的大小。

关于c - 不同的数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16215420/

相关文章:

c - 如何获取 const char 指针的大小

c++ - C 和 C++ 中 printf ("%d\n"、 sizeof ('a' )) 的结果是什么

c - 如何解决这个C链接器错误?

c - 为什么重新定义 sizeof 有效

c - 在 Win 7 (cygwin) 中构建 OpenOCD 时如何解决 "undefined reference to ` isascii'"

c - 涉及 C free() 的单元测试

c++ - sizeof 运算符是否会导致模板参数推导发生?

c++ - 我的缓冲区包含元素,但未被打印

c - 在 C 或 C++ 中,我可以对哪些文件可以包含我的头文件施加限制

c - 如何随机显示数组中的字符串字符