我是 C 的初学者程序员,所以如果我的语言/风格不专业,请见谅。

问题:
我正在尝试确定字符数组的大小,以便稍后我可以知道使用 malloc() 分配的大小。

我的代码:

char *dest;

char *src1 = "Test String";
char src2[] = "Testing!";

dest = (char *) malloc( sizeof(src1) );

问题是我想确定 src1 和 src2 在内存中的大小。即 src1 的大小应为 11,而 src2 的大小应为 8。
但我从 sizeof() 收到的结果是:
  • sizeof(*src1) 是 1 因为 sizeof(char)
  • sizeof(src1) is 4
  • sizeof(src2) is 9 进入大小以及

  • 但是如何正确确定 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/

    10-11 22:47
    查看更多