指针
- 通过指针,可以简化一些 C 编程任务的执行,也可以通过指针进行内存的动态分配。
内存地址 &
-
每一个变量都有一个内存位置,每一个内存位置都定义了可使用(&)运算符访问的地址,它表示了在内存中的一个地址
-
实例
#include <stdio.h> int main() { int num; char chars[10]; printf("num 变量的地址: %p\n", &num ); printf("chars 变量的地址: %p\n", &chars ); return 0; }
-
输出结果:
内存中的值 *
- 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:
类型 *变量名称;
int *num;
- 应用:
#include <stdio.h>
int main() {
// 实际变量的声明
int num = 10;
// 指针变量的声明
int *pointer;
// 把pointer的地址,指向num地址
pointer = #
// 打印num的地址
printf("num变量的地址: %p\n", &num );
// 打印pointer地址
printf("pointer变量的地址: %p\n", pointer );
// 打印pointer的值
printf("*pointer的值: %d\n", *pointer );
}
- 输出结果:
num变量的地址: 0x7ffeefbff54c
pointer变量的地址: 0x7ffeefbff54c
*pointer的值: 10
Program ended with exit code: 0
NULL 空指针
- 在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
- 示例代码:
#include <stdio.h>
int main() {
// 定义一个为空的指针变量
int *nullPointer = NULL;
double *nullDouble=NULL;
// 打印空的指针变量地址
printf("nullPointer 的地址是: %p\n", nullPointer);
printf("nullDouble 的地址是: %p\n", nullDouble);
return 0;
}
- 输出结果:
nullPointer 的地址是: 0x0
nullDouble的地址是: 0x0
Program ended with exit code: 0
- 由上面的示例和输出结果可以看出,NULL 指针是一个定义在标准库中的值为零的常量。
- 在大多数的操作系统上,程序不允许访问地址为 0 的内存,因为该内存是操作系统保留的