我有一个函数,它以字符串数组作为输入,如果它为空,则添加字符串,然后返回数组。如果数组不为空,则应显示数组的内容。
如果条件通过检查大小来检查是否为空。我的问题是,即使数组不是空的,大小也总是为零。我知道数组不是空的,因为我可以打印出它的内容。
这是我的代码:

 char **check(char **words) {
        if(sizeof (words) / sizeof (**words) == 0) {
            words[0] = "vacation";
            words[1] = "vaccaciones";
            words[2] = "vancances"
        }
        else {
             //do something else
        }
 }

无论我做什么,它都不会进入其他状态。我检查了数组,它不是空的,if条件的值总是零。我做错什么了?

最佳答案

检查数组中元素数量的技术是sizeof(array)/sizeof(*array)。您有一个额外的星号(假设您要检查传递的指针数组中的指针数)。
第二,这种技术不适用于指针。将数组传递给函数会将其转换为指针(包含第一个元素的地址),并且无法从该指针检索数组的元素数。
如果希望函数访问数组的大小,则需要以其他方式传递该大小(例如,作为函数的附加参数)。

关于c - 即使数组不为空,数组大小也为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28248210/

10-12 00:31
查看更多