- 此问题在此处已有答案**:
In C how to get number of items in array of pointers to char strings(5个答案)
3年前关闭。
void print(char *arch[], int num){
int i;
for(i=0; i<8; i++)
printf("%s\n", *(arch+i));
}
在这个例子中,我知道arch
是由8个元素组成的,但是如果我不知道,我怎么知道呢?有办法吗?
In C how to get number of items in array of pointers to char strings(5个答案)
3年前关闭。
void print(char *arch[], int num){
int i;
for(i=0; i<8; i++)
printf("%s\n", *(arch+i));
}
在这个例子中,我知道arch
是由8个元素组成的,但是如果我不知道,我怎么知道呢?有办法吗?
2条答案
按热度按时间ig9co6j11#
由于数组在作为参数传递给函数时衰减为指向其第一个元素的指针,因此长度信息也会丢失。
例如:
这就是为什么字符串在C中以null结尾:因此,当指向字符串的指针(或衰减为指针的数组)传递给字符串处理函数时,仍然可以通过递增到空指针并保持计数来确定它们的长度。
如果只给出一个指向数组的指针,而没有下列项之一,则无法知道数组的长度:
1."长度"参数
1.指示数组结尾的标记值(如字符串的空终止符)
kkbh8khc2#
你不可能知道传递给函数的数组的大小。因为数组衰减到指向第一个元素的指针。
编译器将处理。
作为
所以当你这么做的时候
溶液:
1.你可以把数组的大小作为参数传递给函数.
1.在数组的末尾具有已知值,然后循环,直到找到期望的值。