gpt4 book ai didi

c - 学习C——指针和内存寻址

转载 作者:行者123 更新时间:2023-12-01 16:37:49 25 4
gpt4 key购买 nike

我正在学习 C 编程,我有一个关于指针的简单问题...

我使用以下代码来玩转指针:

#include <stdio.h>

int main (int argc, const char * argv[]) {

int * c;

printf("%x\n",c);
return 0;
}

当我打印 C 的值时,我得到一个 0。但是,当我打印 &c(即 printf("&x\n",&c)时,我在内存中得到一个地址...

打印指针时我不应该在内存中获取地址吗(即 printf("%x\n",c)?

--- 编辑 ---

#include <stdio.h>
#include <stdlib.h>

int main (int argc, const char * argv[]) {

char * a = malloc(11);
printf("String please\n");
scanf("%s",a);
printf("%s",a);

}

问题来了,为什么printf("%s",a)返回的是字符串,而不是a中存放的地址?

我不应该使用 *a 跟随指针然后打印字符串吗?

最佳答案

您当前的程序不正确。您定义变量并且在首次使用前不设置值。 c 的初始值不保证,但你很幸运,它等于 0。这意味着 c 指向任何地方。当您打印 &c 时,您会打印变量 c 本身的地址。所以实际上两个版本都打印地址。

关于c - 学习C——指针和内存寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276391/

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