【发布时间】:2016-08-25 10:00:48
【问题描述】:
我已经开始学习 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 变量的地址)打印为十进制?
【问题讨论】:
-
为什么你认为你的指针的值“太大”了?
-
@EOF 好吧,140720994002157 位大约等于 1750 GB,对吧?
-
这是一个虚拟地址,并不反映您计算机中的 RAM 数量。
-
您正在考虑embedded-way,但您使用的是高级操作系统。指针的值不是真实地址。
标签: c pointers memory-address