【发布时间】:2017-06-23 11:16:28
【问题描述】:
我在 Python、C# 和 Java 方面拥有几年经验后才开始学习 C。
我在教程中了解到,char anything[] 始终是一个指针。 (今天,有人告诉我这是错误的) - 我认为我的问题与此有关。
不过,我正在尝试获取字符数组的长度:
#include <stdio.h>
int get_string_length(char * string)
{
int length = 0;
while(string[length] != '\0')
{
char c = string[length];
length++;
}
return length;
}
int get_string_size(char * string)
{
return sizeof(string);
}
int main()
{
printf("%d\n", get_string_size("hello world")); // returns 8
printf("%d\n", get_string_length("hello world")); // returns 11
printf("%d\n", sizeof("hello world")); // returns 12 -> Okay, because of '\0'-char
return 0;
}
结果:
8
11
12
那么,为什么我的get_string_size-方法返回 8 而不是 12? (因为两者都只打电话给sizeof())
【问题讨论】:
-
get_string_size(char*)返回 8,因为这是您机器上指针的字节大小,您可以使用strlen(char*)来获得我猜您的预期结果。 -
这么短的时间里有这么多答案 - 而且也是重复的......我想我真的处于C的起点......:D感谢所有答案......我想我需要多读一点