sizeof const char *错误的值

时间:2014-06-14 11:55:54

标签: ios objective-c

NSString *lang = @"en";    
const char* ar = [lang UTF8String];
int size_of_array = (sizeof ar) / (sizeof ar[0]);

size_of_array等于4(sizeof ar) = 4以及sizeof ar[0] = 1。 为什么?我认为它(size_of_array)必须是2

2 个答案:

答案 0 :(得分:4)

sizeof ar将获得类型char *的大小,这是一个指针,因此在内存中占用4个字节。您想获得字符串的长度,因此请使用函数strlen而不是sizeof ar

答案 1 :(得分:1)

目前还不清楚你要做什么。

你的第三行代码引用了一个数组" ar"在帖子中的任何地方都没有声明,并且似乎与之前的代码无关。

此外,位sizeof ar[]没有多大意义。这将为您提供ar数组中单个元素的大小,无论它是什么。因此,您将获取指针变量ar的大小,并将其除以ar数组中一个元素的大小。

您是否尝试确定ASCII字符串lang_ch的内存大小?

如果是,那么你想要

int size_of_array = strlen(lang_ch) + 1;

这将为您提供返回的字符串的长度,包括空终止符。