我知道这个程序没有分配足够的内存。
我需要帮助的是描述执行此代码时发生的情况的解释。
我说“因为只分配了4个空间,所以没有给足够的空间,所以会导致错误。”这听起来不对。谢谢。

#include <stdio.h>
#include <string.h>

int main()
{
    char word1[20];
    char *word2;

    word2 = (char*)malloc(sizeof(char)*20);

    printf("Sizeof word 1: %d\n", sizeof (word1));  //This line outputs 20
    printf("Sizeof word 2: %d\n", sizeof (word2));  //This line outputs 4
                                                    //before & after I used malloc
    strcpy(word1, "string number 1");
    strcpy(word2, "string number 2"); <---- What is this doing

    printf("%s\n", word1);
    printf("%s\n", word2);
}

最佳答案

size of(word2)返回4,因为这是指针的大小

char *word2;

是一个指针,并且有0个字节分配给它(不像您提到的那样是4个字节)
size of(word1)返回20,因为这是数组的大小
char word1[20]

是一个数组,并为它保留了20个字节

关于c - 需要Word2变量的解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14836978/

10-10 09:41