C中的内存地址

Sha*_*ars 3 c c-strings dynamic-allocation

在主函数的最后一行,为什么&word2不同word2?假设正确的标题已到位.谢谢!

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

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

    printf("Sizeof word 1: %d\n", sizeof (word1));
    printf("Sizeof word 2: %d\n", sizeof (word2));

    strcpy(word1, "string number 1");
    strcpy(word2, "string number 2");

    printf("%s\n", word1);
    printf("%s\n", word2);
    printf("Address %d, evaluated expression: %d\n", &word1, word1);
    printf("Address %d, evaluated expression: %d\n", &word2, word2); 
    //Why this one differ?
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*sop 7

word2是您使用分配的内存的地址malloc.

&word2是名为的变量的地址word2.