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
。
答案 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;
这将为您提供返回的字符串的长度,包括空终止符。