C 字符串数组 sizeof() 更改

标签 c string

void func(char *s[]){
    printf("s: %d\n", sizeof(s));
}

void caller(){
    char *a[2];
    for(int i = 0; i < 2; i++){
        a[i] = (char *)malloc(50 * sizeof(char));
    }
    strcpy(a[0], "something");
    strcpy(a[1], "somethingelse");

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

    func(a);
}

此输出

a: 16
s: 8

为什么输出是sizeof()不同之处在于 caller()func() ?另外,func有可能吗?获取 char * 的数量通过 sizeof 在数组中?

最佳答案

其中一个是两个字符指针的数组。另一个是指向指针数组的指针。它们的大小不一样。

关于C 字符串数组 sizeof() 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644163/

相关文章:

javascript - 将字符串拆分为行和句子,但忽略缩写

长字符串中的 C++ 字符搜索(随机位置)

c - 在函数签名中使用 void 指针

c - 类型为 void* 的链表

c - 在C中为结构指针数组成员分配地址

java - 为单个字符串设置字体?

c - vfork 永无止境

c - 如何正确释放哈希表上的元素

java - 了解字符串类型 MAP

python - 如何从特定字母开始并在遇到数字时结束?