我们可以使用 指针 来保存一个 变量 的地址,在 C 语言 中我们定义指针变量需要在变量名和类型之间加一个 *
,我们要获取一个变量的地址,需要在变量前面加上 &
。
type *varName;
参数 | 描述 |
---|---|
type | 指针变量的类型。 |
varName | 指针变量名。 |
我们定义了一个指针变量 varName,其类型为 type*
,其中 type 可以是任意的 数据类型。
&varName
参数 | 描述 |
---|---|
varName | 要获取地址的变量名。 |
我们使用 &
符号获取一个变量的地址。
*varName
参数 | 描述 |
---|---|
varName | 要获取值的指针变量名。 |
我们使用 *
符号获取一个指针变量所指向的地址的值。
定义指针变量
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int a = 2021;
int *pa = &a;
printf("a = %d, &a = %p\n", a, &a);
printf("*pa = %d, pa = %p\n", *pa, pa);
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先,定义了一个 int 类型 的变量 a,并赋值为 2021,接着,我们定义了一个指针变量 pa,其保存了变量 a 的地址。
定义指针变量我们需要在变量名前面加上 *
,同时,获取变量的地址,我们需要使用 &
。接着,我们首先使用 printf 打印了变量 a 的值和变量 a 的地址,接着,我们再次使用 printf 打印了 *pa
的值和 pa 的值。
我们发现,变量 a 的值和 *pa
的值相等,变量 pa 的值和变量 a 的地址相等。即,变量 pa 保存了变量 a 的地址,我们使用了 *
可以获取指针变量所指向的变量的值。
使用指针变量,可以修改它所指向的变量的值
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int a = 2021;
int *pa = &a;
printf("a = %d, &a = %p\n", a, &a);
printf("*pa = %d, pa = %p\n", *pa, pa);
*pa = 1100;
printf("chanage after a = %d, *pa = %d\n", a, *pa);
return 0;
}
程序运行后,控制台输出如下图所示:
我们使用了指针变量 pa 保存了变量 a 的地址,接着, 我们分别打印了 a 的值、a 的地址、*pa
的值和 pa 的值。
我们发现,pa 的值就是 a 的地址,*pa
的值就是 a 的值,接着,我们给 *pa
重新赋值为 1100,此后,我们再次打印了 a 的值和 *pa
的值,我们发现,a 的值和 *pa
的值都变成了 1100。
这是因为,指针变量 pa 就是变量 a 的地址,*pa
获取的就是 a 的地址所对应的值,这里就是变量 a,因此,我们修改 *pa
的值就是修改了变量 a 的值。
因此,我们可以看出,我们可以通过指针变量来修改其所指向的变量的值。
我们可以使用指针来保存一个变量的地址,在 C 语言中我们定义指针变量需要在变量名和类型之间加一个 *
,我们要获取一个变量的地址,需要在变量前面加上 &
。