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