初识指针

mac2025-05-30  2

指针的概念

要知道指针的概念,要先了解变量在内存中如何存储的。在存储时,内存被分为一块一块的。每一块都有一个特有的编号。而这个编号可以暂时理解为指针,就像酒店的门牌号一样。 指针(Pointer)是编程语言中的一个对象,它是利用地址,值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元。可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。

指针的定义及使用

定义

//这里我分别定义了 int、float、char 类型的指针变量 int *x; float *f; char *ch

如上面的定义,指针变量名为x、f、ch,并不是*x、*f、*ch;

使用

取地址运算符&:单目运算符&是用来取操作对象的地址。例:&i 为取变量 i 的地址。对于常量表达式、寄存器变量不能取地址(因为它们存储在存储器中,没有地址)。 指针运算符(间接寻址符):与&为逆运算,作用是通过操作对象的地址,获取存储的内容。例:x = &i,x 为 i 的地址,x 则为通过 i 的地址,获取 i 的内容。

int a; int *pa; pa = &a; printf("%d", *pa);

&和* 都是右结合的。假设有变量 x = 10,则&x 的含义是,先获取变量 x 的地址,再获取地址中的内容。因为“&”和“*”互为逆运算,所以 x = *&x。

int main() { //声明两个普通变量 int x, y; //声明两个指针变量 int *px, *py; //声明一个临时变量,用于交换 int t; //输入两个值,赋值给 x、y scanf("%d", &x); scanf("%d", &y); //给指针变量 px、py 赋初值(关联变量 x、y) px = &x; py = &y; //利用指针来对比 x、y 的值,如果 x 的值比 y 的值小,就交换 if(*px < *py) { //交换步骤,其中*px == x、*py == y t = *px; *px = *py; *py = t; } printf("x = %d, y = %d", *px, *py); } 输入:10 20 输出结果为:x = 20, y = 10

指针初始化

指针变量与其它变量一样,在定义时可以赋值,即初始化。也可以赋值“NULL”或“0”,如果赋值“0”,此时的“0”含义并不是数字“0”,而是 NULL 的字符码值

//利用取地址获取 x 的地址,在指针变量 px 定义时,赋值给 px int x; int *px = &x; //定义指针变量,分别赋值“NULL”和“0” int *p1= NULL, int *p2 = 0;
最新回复(0)