【发布时间】:2018-01-17 20:01:03
【问题描述】:
我正在尝试学习如何在 C 程序中使用指针;我的例子如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int * tab = (int*)malloc(sizeof(int)*5);
int a = 10;
int *p;
p = &a;
printf("the address of a is %d \n",&a);
printf("the address of a using the pointer is %p \n",p);
printf("the address of tab is %d \n",tab);
}
我正在尝试打印a 的地址、p 内部的地址值以及tab 的第一个字节开始的位置。
使用"%p"时我可以得到十六进制值,但我愿意使用十进制值。
【问题讨论】:
-
首先——地址的小数点是多少?
-
"%d"与int一起使用。它可能不适用于&a。建议printf("%p\n",(void*) &a); -
要打印指针的地址,你应该使用
%p。忘记指针的十进制解释吧,十六进制表示要好得多。 -
稍后我将尝试操作 tab 变量,并且我将测试 tab 中的每个单元格是否都是 4 字节,所以我可能会使用 tab+8 字节来获取特定单元格的值,这里是一个简单的例子,小数对我来说很容易。
-
@zakzak
%p的输出格式是实现定义的,但它是定义的。您的代码给出了十进制输出,但不一定是正确的输出。您的目标似乎想要任何简单的十进制输出,而不一定是正确的十进制输出。