gpt4 book ai didi

c - c中数组的地址分配和指向数组的指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:33 24 4
gpt4 key购买 nike

我是c语言的新手。这是我的代码

char c[]="name";
char *p="city";
printf("\n 1. memory location of array in pointer is %u",p);
p=c;
printf("\n 2. memory location of array in pointer is %u",p);

它给了我输出:

指针中数组的内存位置为177

指针中数组的内存位置为65518

现在检查第一次内存分配的差异

char *p="city"

p中的地址是177,第二次是

p=&c;

p中的地址是65518,为什么?我没有得到数组的地址分配。通常在 c 中声明一些变量时,地址类似于 655... 而在 char *p 时,它是不同的。有什么具体原因吗。

我正在使用 windows 7 32 位操作系统

我的问题是什么时候

char *p="city"

p 中的地址是 177,为什么?

最佳答案

因为数组名称在分配或传递时衰减为指向第一个元素的指针(分配给第一个元素的地址类型的变量)。

p = c;  // & is not needed, and not defined behavior 

printf("%p\n", (void *)&p);

给你地址

关于c - c中数组的地址分配和指向数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com