C指针
C语言指针
科学大道上只有我一个
可以迷茫,但别停下学习的脚步
展开
-
猜数字小游戏
srand(): 随机种子rang():生成随机数代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>//进入猜数字游戏void game(){ // RAND_MAX 32767 int guess_number = 0; int ret = rand() % 100 +原创 2022-03-31 12:11:26 · 4001 阅读 · 0 评论 -
指针进阶--qsort函数的实现
qsort函数void qsort(void* base, size_t nitems, size_t size, int (*compar)(const void*, const void*));base – 指向要排序的数组的第一个元素的指针。nitems – 由 base 指向的数组中元素的个数。size – 数组中每个元素的大小,以字节为单位。compar– 用来比较两个元素的函数指针参数是所比较两个元素指针当第一个元素小于第二个元素的时候返回一个< 0的值,当第原创 2022-03-30 23:28:26 · 111 阅读 · 0 评论 -
指针进阶---qsort函数的使用
qsort函数void qsort(void* base, size_t nitems, size_t size, int (*compar)(const void*, const void*));base – 指向要排序的数组的第一个元素的指针。nitems – 由 base 指向的数组中元素的个数。size – 数组中每个元素的大小,以字节为单位。compar– 用来比较两个元素的函数指针参数是所比较两个元素指针当第一个元素小于第二个元素的时候返回一个< 0的值,当第原创 2022-03-30 22:12:47 · 269 阅读 · 0 评论 -
指针进阶---回调函数
回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的实践或者条件发生时由另外一方调用,用于对该事件或条件进行响应。看个例子#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void print(const char* str) { printf("%s", str);}vo原创 2022-03-29 21:21:27 · 235 阅读 · 0 评论 -
指针进阶---函数指针
函数指针首先看一段代码找到函数的地址#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int Add(int a, int b) { return a + b;}int main() { int a = 2; int b = 3; printf("%p\n", Add); //005811C2 printf("%p\n", &Add); //005811C2 getchar(); return 0;}原创 2022-03-23 19:01:14 · 471 阅读 · 0 评论 -
指针进阶---数组传参
数组传参1 一维数组传参#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void test1(int arr[]) { return 0;}void test2(int arr[10]) { return 0;}void test3(int* parr) { return 0;}int main() { int arr[10] = { 0 }; test1(arr); test2(arr)原创 2022-03-18 00:23:50 · 251 阅读 · 0 评论 -
指针进阶---数组指针
数组指针直接看代码#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9.10 }; int(*p)[10] = &arr; //*p == arr,p == &arr int* pa = arr; // pa == arr char* arr1[5] = { 0 }; char* (*p1)[5] = &arr1原创 2022-03-17 12:53:33 · 130 阅读 · 0 评论 -
指针进阶---指针数组
指针数组一个基本用法#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main() { int arr1[] = { 1,2,3,4,5 }; int arr2[] = { 2,3,4,5,6 }; int arr3[] = { 3,4,5,6,7 }; int* parr[] = { arr1,arr2,arr3 }; int i = 0; for (i = 0; i < 3; i++) { int j原创 2022-03-17 11:02:09 · 348 阅读 · 0 评论 -
指针进阶---字符指针
字符指针主要有三种应用形式,下面通过代码进行说明1 用字符指针变量指向一个字符#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main() { char c = 'w'; char* pc = &c; printf("%c\n", *pc); return 0;}2 用字符指针变量指向字符数组的首地址#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.原创 2022-03-16 23:34:26 · 211 阅读 · 0 评论 -
浅谈“野指针”
野指针概念野指针就是指指针指向的位置是不可知的.野指针的主要形式1 指针未初始化,局部指针变量未初始化,默认为随机值#include<stdio.h>int main() { int* p;//指针变量未初始化 *p = 0; getchar(); return 0;}2 指针越界访问#include<stdio.h>int main() { int arr[10] = { 0 }; int i = 0; int* p = arr; for (原创 2022-03-10 21:37:17 · 150 阅读 · 0 评论 -
浅谈指针类型的作用
首先看一段代码#include <stdio.h>//指针就是变量,用来存放地址的变量int main() { int a = 0x11223344; int* pa = &a; char* pc = &a; printf("%p\n", pa); printf("%p\n", pc); getchar(); return 0; }运行结果为:可以看到int* 类型的变量pa,和char* 类型的变量pc都可以获取相同的地址,因为在32原创 2022-03-07 17:50:51 · 523 阅读 · 0 评论 -
C语言 二分法查找有序数组中的数
二分法查找有序数组中的数总体思路:将所查找的数字与数组的中间下标(mid)的元素进行对比,左下标为left,右下标为right,mid = (left + right)/2。刚开始当所查找的数字大于中间数字arr[mid]时,将right 设置为 mid-1 ,当查找的数字小于之间数字arr[mid]时,将left 设置为 mid+1。然后用更新的值再更新mid循环此操作,当left大于right时说明没有查询到此数字,结束循环。// 二分法查找有序数列中的某个数#define _CRT_SECU原创 2022-02-18 23:42:18 · 829 阅读 · 0 评论