10.指针
约 493 字大约 2 分钟
指针是 C 语言中的一种特殊数据类型,用于存储变量的地址
指向 变量
<数据类型> *<指针变量名称>;
int main() {
// 数组
int aa =1;
int * bb = &aa;
printf("数据aa: %d \n", aa);
printf("数据bb: %d \n", bb);
printf("数据&bb: %d \n", *bb);
return 0;
}
指向 常量
常量指针(const pointer):指针本身是常量,指向的内容可以修改。
指针常量(pointer to const):指针所指向的内容是常量,指针本身可以修改。
int main() {
int num = 10;
int a = 11;
// 声明一个常量指针,指向整型常量
const int *ptr = #
// 声明一个指针常量,指向整型变量
int *const ptr2 = #
printf("%d \n", ptr);
printf("%d \n", ptr2);
// 可以被改变
ptr = &a;
// ptr2 = &a; 语法错误了
return 0;
}
指向 结构体
struct Rectangle {
int width;
int height;
};
int main() {
struct Rectangle a;
a.width = 1;
a.height = 2;
printf("width: %d \n", a.width);
printf("height: %d \n", a.height);
struct Rectangle *b = &a;
printf("width: %d \n", b->width);
printf("height: %d \n", b->height);
return 0;
}
指向 数组
int main() {
// 数组
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *aa = arr;
printf("数据: %d \n", aa);
printf("数据: %d \n", *aa);
printf("数据: %d \n", *(aa + 1));
printf("数据: %d \n", *(aa + 2));
printf("数据: %d \n", *(aa + 3));
printf("数据: %d \n", *(aa + 4));
printf("数据: %d \n", *(aa + 5));
return 0;
}
指向 函数
int add(int a, int b);
int main() {
// 指向函数的指针变量
int (*ptr)(int, int) = &add;
// 通过函数指针调用相应的函数
int result = ptr(3, 4);
// 打印函数调用的结果
printf("Result: %d\n", result);
return 0;
}
int add(int a, int b) {
return a + b;
}
指向 空
在C语言中,NULL是一个宏定义,表示一个空指针常量。它通常被定义为一个整数常量0或者(void *)0,用于表示一个无效的指针。
#define NULL ((void *)0)
int main() {
int *a = NULL;
return 0;
}
野指针
未被初始化的指针,指向不合法的地址
指针运算符
+
-
++
--