我应该使用哪种格式说明符来打印变量的地址?下面很多我很困惑.
%u - 无符号整数
%x - 十六进制值
%p - 无效指针
哪个是打印地址的最佳格式?
#include<stdio.h>
int main()
{
int a;
printf(" %u ",&a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我们得到的地址是进程的虚拟地址或者是进程在主存中运行时的物理地址。请帮助我很困惑!
我正在分析外围驱动程序的文件,并找到了一些寄存器映射代码.我有关于指针的基本知识,但我无法理解下面的代码.
#define WATCHDOG0_LOAD_R (*((volatile uint32_t *)0x40000000))
Run Code Online (Sandbox Code Playgroud)
我知道它定义WATCHDOG0_LOAD_R了寄存器内存地址的标识符.但我无法理解右侧的语法.任何人都可以详细解释为什么这个指针是以这种方式编写的吗?
如果我有以下指针变量声明:
int*a;
int**c;
关于每种类型和价值,将如下:
a是类型int*,并将持有memory address
*a是类型int,并将保存指针指向的变量的值
c是类型int**,并将举行???????????????????
c*是类型int*,并将保持它指向的指针的内存地址
c**是类型int,并假设指针c指向指针b,指针b指向变量a,这里保持的值将是变量的值a
这种方式是否正确,除非c我不确定?
谢谢.
只是想知道当我在C中使用错误的格式说明符时会发生什么?
例如:
x = 'A';
printf("%c\n", x);
printf("%d\n", x);
x = 65;
printf("%c\n", x);
printf("%d\n", x);
x = 128;
printf("%d\n", x);
Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
int main() {
int num=1234;
printf("%p", &num);
return 0;
}
//Ouput:
//0xffffcbfc
Run Code Online (Sandbox Code Playgroud)
0xffffcbfc是RAM还是硬盘地址存储器?