gpt4 book ai didi

c - C中指针的值

转载 作者:太空狗 更新时间:2023-10-29 16:53:41 25 4
gpt4 key购买 nike

我已经开始学习 C(所以,你知道……指针)。

我有这个代码:

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

int main (int argc, char* argv[])
{
char c = 'c';
char* cptr = &c;

printf("c = %c\n", c);
printf("*cptr = %c\n", *cptr);
printf("c address = %p\n", &c);
}

我的输出是:

c = c
*cptr = c
c address = 0x7fff0217096f

当我将上面的十六进制转换为十进制时,我得到:140720994002157

我的问题:

1)这个十进制值代表的是内存地址吗?会不会太大了?

2) 如何将指针的值(即 c 变量的地址)打印为十进制?

最佳答案

Isn't [the address] too big?

这是一个虚拟地址,意味着它的数值不一定代表字节在物理内存中的序号。此外,不同的进程可能会在同一个虚拟地址保存不同的数据,因为每个进程都有其独立的地址空间。

How can I print the value of the pointer in an integer format?

使用uintptr_t 将指针表示为整数值,然后使用PRIuPTR 打印宏观:

#include <stdio.h>
#include <inttypes.h>

int main(void) {
char c = 'x';
char *p = &c;
uintptr_t x = (uintptr_t)p;
printf("Pointer as decimal: %"PRIuPTR"\n", x);
return 0;
}

Demo.

关于c - C中指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39142190/

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