*是一个单目操作符,它的意义是访问它所存储的地址,并查看地址所存储的值。也被称作解引用指针(dereferencing the pointer).
指针本质上就是一串数字,由bit位构成。可以1个bit,也可以一个字节,还可以多个字节。ios/macos中,是以4字节(32位)/8字节(64位)为单位的。同时也支持按字对齐。
#ifdef __LP64__
# define WORD_SHIFT 3UL
# define WORD_MASK 7UL
# define WORD_BITS 64
#else
# define WORD_SHIFT 2UL
# define WORD_MASK 3UL
# define WORD_BITS 32
#endif
static inline uint32_t word_align(uint32_t x) {
return (x + WORD_MASK) & ~WORD_MASK;
}
static inline size_t word_align(size_t x) {
return (x + WORD_MASK) & ~WORD_MASK;
}
这个对齐其实是硬件开发需要关注的,和cpu寻址有关,c语言开发者只需要知道两件事:
1、内存中的每个位置由一个独一无二的地址标识。
2、内存中的每个位置都包含一个值。(这个值可以被不同的读取方式读取成不同的意义)
网友评论