指针 变量与普通 变量 一样,在定义的时候,可以直接初始化,不过指针变量只能初始化为变量的地址,不可以直接初始化为值。
type *pName = &varName;
参数 | 描述 |
---|---|
type | 指针变量的类型。 |
pName | 指针变量名。 |
varName | 指针要指向的变量。 |
我们定义了一个指针变量 pName,其类型为 type,它指向了变量 varName。
初始化指针变量
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int a = 2021;
int *pa = &a;
double d = 1099;
double *pd = &d;
printf("*pa = %d, pa = %p\n", *pa, pa);
printf("*pd = %lf, pd = %p\n", *pd, pd);
return 0;
}
程序运行后,控制台输出如下图所示:
我们分别定义了两个指针变量,并分别初始化为了两个变量的地址,此时,我们访问指针变量所保存的地址以及指针变量指向的变量的值,都可以正常访问。
指针变量不可以初始化为具体的值
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int *pa = 1024;
printf("*pa = %d, pa = %p\n", *pa, pa);
return 0;
}
程序运行后,控制台输出如下图所示:
这次,我们直接将指针变量初始化为了一个具体的值,而不是变量的地址,此时我们程序运行出错,这是因为,指针变量只能保持变量的地址,而我们的系统中没有 1024 这个内存地址,所以程序报错。
因此,在使用指针时,我们要切记,一定要使用指针保存变量的地址不是具体的值。
指针变量与普通变量一样,在定义的时候,可以直接初始化,不过指针变量只能初始化为变量的地址,不可以直接初始化为值。