内存地址文字

kev*_*rpe 5 c memory pointers literals memory-address

给定十六进制格式的文字内存地址,如何在C中创建一个指向此内存位置的指针?

我的平台(IBM iSeries)上的内存地址是128位.C类型long long也是128位.

想象一下,我有一个字符串(char数组)的内存地址,它是: C622D0129B0129F0

我假设正确的C语法直接寻址此内存位置:

const char* const p = (const char* const)0xC622D0129B0129F0ULL

我用ULL后缀表示unsigned long long literal.

我的内核/平台/操作系统是否允许我这样做是一个不同的问题.我首先想知道我的语法是否正确.

Gre*_*ill 12

你的语法几乎是正确的.你不需要其中一个const:

const char* const p = (const char*)0xC622D0129B0129F0ULL
Run Code Online (Sandbox Code Playgroud)

const之前p表示该变量 p无法初始化后更改.它没有涉及到什么p指向什么,所以你不需要它在右边.

  • Jens是错误的 - 行为是实现定义的,*不是*未定义的 (2认同)