C语言指针究竟是什么?1分钟内能掌握其核心概念吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1283个文字,预计阅读时间需要6分钟。
计算机中所有的数据都必须存储在内存中,不同类型的数据占用的字节数不同。例如,int类型占用4个字节,char类型占用1个字节。为了准确访问这些数据,每个字节都必须赋予唯一的符号编码,就像计算机中的数据存储这样。
计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。下图是 4G 内存中每个字节的编号(以十六进制表示):
我们将内存中字节的编号称为地址(Address)或指针(Pointer)。地址从 0 开始依次增加,对于 32 位环境,程序能够使用的内存为 4GB,最小的地址为 0,最大的地址为 0XFFFFFFFF。
下面的代码演示了如何输出一个地址:
#include <stdio.h>
int main(){
int a = 100;
char str[20] = "c.biancheng.net";
printf("%#X, %#X\n", &a, str);
return 0;
}
运行结果:
0X28FF3C, 0X28FF10
%#X表示以十六进制形式输出,并附带前缀0X。a 是一个变量,用来存放整数,需要在前面加&来获得它的地址;str 本身就表示字符串的首地址,不需要加&。
本文共计1283个文字,预计阅读时间需要6分钟。
计算机中所有的数据都必须存储在内存中,不同类型的数据占用的字节数不同。例如,int类型占用4个字节,char类型占用1个字节。为了准确访问这些数据,每个字节都必须赋予唯一的符号编码,就像计算机中的数据存储这样。
计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。下图是 4G 内存中每个字节的编号(以十六进制表示):
我们将内存中字节的编号称为地址(Address)或指针(Pointer)。地址从 0 开始依次增加,对于 32 位环境,程序能够使用的内存为 4GB,最小的地址为 0,最大的地址为 0XFFFFFFFF。
下面的代码演示了如何输出一个地址:
#include <stdio.h>
int main(){
int a = 100;
char str[20] = "c.biancheng.net";
printf("%#X, %#X\n", &a, str);
return 0;
}
运行结果:
0X28FF3C, 0X28FF10
%#X表示以十六进制形式输出,并附带前缀0X。a 是一个变量,用来存放整数,需要在前面加&来获得它的地址;str 本身就表示字符串的首地址,不需要加&。

