我是 C 的初学者程序员,所以如果我的语言/风格不专业,请见谅。
问题:
我正在尝试确定字符数组的大小,以便稍后我可以知道使用 malloc() 分配的大小。
我的代码:
char *dest;
char *src1 = "Test String";
char src2[] = "Testing!";
dest = (char *) malloc( sizeof(src1) );
问题是我想确定 src1 和 src2 在内存中的大小。即 src1 的大小应为 11,而 src2 的大小应为 8。
但我从 sizeof() 收到的结果是:
但是如何正确确定 src1 的大小呢?为什么 sizeof(src2) 起作用而 sizeof(src1) 不起作用?
如果我不清楚我要做什么,请回复,我会尽量说得更清楚。
提前致谢。
最佳答案
sizeof(src1)
为您提供环境中指针的大小,而不是数组的长度。根据您的结果,环境中指针的大小为 4。
如果要确定指针指向的字符串文字的大小(如
strlen
的情况),则需要使用 src1
。sizeof(src2)
返回字符数组的大小。
为了了解两者之间的区别,您应该了解:
What is the difference between char a[] = “string”; and char *p = “string”;
关于c - 确定内存中字符数组的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13110599/