C语言-指针地址使用
使用 int *p_val = &val; 进行指针变量的声明, 也可以使用typedef int * pint_t来进行声明
/* 指针演示 */ #include <stdio.h> typedef int *pint_t; // int main() { int val = 0; // pint_t p_val; // 使用定义来决定声明 pint_t p_val; // int *p_val = &val; p_val = &val; // int *p_val1 = NULL; *p_val = 10; printf("您输入的数是%d\n", val); return 0; }
使用指针地址进行两个数的位置交换
/* 指针演示 */ #include <stdio.h> int main() { int val = 3, val1 = 7; int *p_val = &val, *p_val1 = &val1; //进行数据的位置交换 *p_val ^= *p_val1; *p_val1 ^= *p_val; *p_val ^= *p_val1; printf("p_val是%d, p_val1是%d\n", *p_val, *p_val1); return 0; }
使用指针地址获得最小的数字
/* 指针使用,计算最小的数字 */ #include <stdio.h> int main() { int val = 0, val1 = 0, val2 = 0; int *p_val = &val; //构造p_val指向val 构建初始化的指针 printf("请输入三个数字:"); scanf("%d%d%d", &val, &val1, &val2); if (*p_val > val1) { p_val = &val1; } if (*p_val > val2) { p_val = &val2; } printf("最小的数字是%d\n", *p_val); }
使用int *p_val = arr; 来定义数据, 使用+1来表示下一个数组的地址
/* 地址计算规则 */ #include <stdio.h> int main() { int val = 0; int arr[] = {1, 2, 3, 4, 5}; int *p_val = arr; //用于进行数据地址的存储 printf("%d\n", *(arr + 2)); for (val = 0;val < 5;val++) { printf("%d ", *(p_val + val)); } printf("\n"); printf("%d", (int)(&arr[3] - p_val)); // printf("\n"); }
数组指针的循环,使用p_val = arr;来表示第一个数组的地址,然后在for里面使用,p_val++,进行自增操作
/* 指针演示 */ #include <stdio.h> int main() { int val = 0; int *p_val = NULL; int arr[] = {1, 2, 3, 4, 5}; for (p_val = arr;p_val <= arr + 4;p_val++) { printf("%d ", *p_val); } printf("\n"); }
使用const对数据进行预先的声明, const可以限制用户对数据的内容和地址进行修改
/* const关键字 */ #include <stdio.h> int main() { int val = 0; const int *p_val = &val; //不可以对数组的内容进行操作 int * const p_val = &val; //不可以对数组的指针进行操作 // *p_val = 10; //对文件的内容进行赋值 //对地址进行操作 // p_val = NULL; }
void无类型指针,在声明的时候可以构建无类型指针,在输出时进行强制类型转换
/* 无类型指针 */ #include <stdio.h> int main() { char ch = 'e'; int val = 34; float fval = 6.3f; void *p_val = NULL; p_val = &fval; printf("%g\n", *(float *)p_val); return 0; }
返回地址时,因为函数的原因,数据的地址将会被删除,因此使用static进行静态变量设置
/* 指针演示 */ #include <stdio.h> int * read(void) { static int val = 0; //地址会被清除 printf("请输入数据:"); scanf("%d", &val); return &val; } int main() { int *p_val = read(); printf("输入的数据是%d\n", *p_val); }
使用地址的移动来进行指针的变化传递
/* 使用指针将两个数进行对换 */ #include <stdio.h> void swap_arr(int *p_arr, int size) { int *p_head = p_arr; int *p_tail = p_arr + size - 1; while (p_head < p_tail) { *p_head ^= *p_tail; *p_tail ^= *p_head; *p_head ^= *p_tail; p_head++; p_tail--; } } int main() { int arr[] = {1, 2, 3, 4, 5}; swap_arr(arr, 5); for (int tmp = 0;tmp <= 4;tmp++) { printf("%d ", arr[tmp]); } printf("\n");
每天更新pyQt5内容