一、指针简介
指针(Pointer)是C语言的一个重要知识点,其使用灵活、功能强大,是C语言的灵魂。指针与底层硬件联系紧密,使用指针可以操作数据的地址,实现数据的间接访问。指针是C语言区别于其他高级语言的关键特性之一。
二、计算机存储机制
在计算机系统中,小端(Little Endian)和大端(Big Endian)是两种不同的字节序(Byte Order)方式,它们定义了多字节数据在内存中的存储顺序。了解这些概念对于操作系统、网络协议和低级编程(如嵌入式系统)非常重要,数组的存储不受大小端的影响,例如数组是char型数组,其数据就按照顺序依次存储,但如果数组是short型的,那么其存储顺序虽然不受影响,但是每个元素的存储方式还是要按照大小端的定义来存储。
小端(Little Endian)
小端模式是将数据的低字节存储在内存的低地址处,而高字节存储在内存的高地址处。换句话说,数据的最低有效字节在最前面(最低地址),最高有效字节在最后面(最高地址)。
理解指针的基础是理解计算机的存储机制。计算机通过内存地址来访问数据,变量在内存中占据特定的地址空间。例如:
int a = 0x12345678;
short b = 0x5A6B;
char c[] = {0x33, 0x34, 0x35};
小端存储模式
大端(Big Endian)
大端模式是将数据的高字节存储在内存的低地址处,而低字节存储在内存的高地址处。换句话说,数据的最高有效字节在最前面(最低地址),最低有效字节在最后面(最高地址)。
大端存储模式
三、定义指针
指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针。
定义一个指针变量:
数据类型 |
指向该数据类型的指针 |
||
(unsigned) char |
1字节 |
(unsigned) char * |
x字节 |
(unsigned) short |
2字节 |
(unsigned) short * |