目录
指针类型指定了指针所指向的变量的数据类型。例如,int*是指向整数(int)类型的指针。指针变量是一个存储了内存地址值的变量,可以使用指针变量来存储、操作和访问内存中的数据。
- #include
-
- int main() {
- int num = 10; // 定义一个整数变量
- int* ptr; // 定义一个指向整数的指针变量
-
- ptr = # // 将指针指向num变量的地址
-
- printf("num 的值:%d\n", num);
- printf("指针所指向的变量的值:%d\n", *ptr);
-
- return 0;
- }

*,它用于声明一个指针变量。指针变量用来存储内存地址,可以指向其他变量或数据结构。例如,int *ptr;声明了一个指向整数的指针变量。*符号。通过将间接引用运算符应用于指针变量,可以获取该指针指向的实际值。例如,如果ptr是一个指向整数的指针变量,那么*ptr将给出该指针指向的整数的值。通过指针,我们可以访问指针所指向的变量。使用解引用运算符(*)可以获取指针所指向的变量的值。
- #include
-
- int main() {
- int num = 10;
- int* ptr = #
-
- printf("通过指针访问变量的值:%d\n", *ptr);
-
- *ptr = 20; // 修改指针所指向的变量的值
-
- printf("修改后的变量的值:%d\n", num);
-
- return 0;
- }

空指针是指未指向任何有效地址的指针。在C语言中,可以使用NULL宏来表示空指针。
- #include
-
- int main() {
- int* ptr = NULL; // 声明一个空指针
-
- if (ptr == NULL) {
- printf("指针是空指针\n");
- } else {
- printf("指针不是空指针\n");
- }
-
- return 0;
- }

- float *p;
- p=(float *)malloc(sizeof(float));
- ……
- free(p);
- iptr != NULL或iptr == NULL
- iptr != 0
指针操作是指对指针进行一些特定的运算或操作,用于操作指针所指向的内存位置。在C语言中,指针操作包括指针的算术运算、指针的比较和指针的递增/递减等。
- #include
-
- int main() {
- int arr[] = {1, 2, 3, 4, 5};
- int* ptr = arr;
-
- printf("第一个元素:%d\n", *ptr);
-
- // 指针加法运算
- ptr = ptr + 1;
- printf("第二个元素:%d\n", *ptr);
-
- // 指针减法运算
- ptr = ptr - 1;
- printf("回到第一个元素:%d\n", *ptr);
-
- return 0;
- }

可以对两个指针进行比较运算,包括相等比较(==)、不等比较(!=)、大于比较(>)、小于比较(<)、大于等于比较(>=)和小于等于比较(<=)。
- #include
-
- int main() {
- int arr[] = {1, 2, 3, 4, 5};
- int* ptr1 = &arr[0];
- int* ptr2 = &arr[2];
-
- if (ptr1 == ptr2) {
- printf("指针相等\n");
- } else {
- printf("指针不相等\n");
- }
-
- if (ptr1 < ptr2) {
- printf("ptr1 指向的元素在 ptr2 指向的元素之前\n");
- } else {
- printf("ptr1 指向的元素在 ptr2 指向的元素之后\n");
- }
-
- return 0;
- }

指针可以通过递增(++)和递减(--)运算符来移动到下一个或上一个内存位置,移动的距离取决于指针所指向的数据类型。
- #include
-
- int main() {
- int arr[] = {1, 2, 3, 4, 5};
- int* ptr = arr;
-
- printf("第一个元素:%d\n", *ptr);
-
- // 指针递增
- ptr++;
- printf("下一个元素:%d\n", *ptr);
-
- // 指针递减
- ptr--;
- printf("回到第一个元素:%d\n", *ptr);
-
- return 0;
- }

C语言支持指向指针的指针,也称为多级指针。指向指针的指针存储了一个指向指针变量的地址,通过多级指针可以访问多级间接引用的内存。
- #include
-
- int main() {
-
- int num = 10;
- int* ptr = #
- int** ptr2 = &ptr;
-
- printf("num 的值:%d\n", num);
- printf("指针所指向的变量的值:%d\n", *ptr);
- printf("指向指针的指针所指向的变量的值:%d\n", **ptr2);
-
- return 0;
- }
