帝国建站模板,易联网站建设,ai怎么做网页,docker运行wordpress一#xff0c;调式程序的技巧#xff1a;
1.明确问题 2.定位问题 3.加打印#xff08;打印核心数据0#xff09; 二#xff0c;指针的回顾
1.指针的概念#xff1a;指针就是地址#xff08;内存单元的编号#xff09;#xff0c;是一个数据类型#xff08;指针类型…一调式程序的技巧
1.明确问题 2.定位问题 3.加打印打印核心数据0 二指针的回顾
1.指针的概念指针就是地址内存单元的编号是一个数据类型指针类型 指针在不同于句中 定义指指针指的是定义一个指针变量int *p 打印指针某个变量的指针就是打印出一个地址的内容
2.指针变量的定义 基类型*变量名 基类型数据类型 / 基本数据类型 / 数组类型 / 指针类型 * *定义的是一个指针类型的变量修饰指针变量名的 *p的运算s1拿p中的地址到内存定位 s2定位处偏移基类型大小的空间 s3被当作了基类型变量来看
3.注意事项指针变量的大小 64位8字节 32四字节 指针类型存储的是地址特殊的数据 指针变量的给值int *p --- 野指针没有初始化被当作了地址所以要避免野指针一般初始化为 NULL
4.指针的核心用途被调函数修改主调 用法修改谁就传谁的地址 *p的运算---间接访问
5.指针 一维整型数组指针操作一维 int a[10];; int *pa; *(pi) int 型变量 a[i] p[i] *(ai)
6.关系运算 bq bq * p-q (前提是同一类型的指针表示之间差了几个基类型) 指针不能做加法运算
迭代运算本质就是可以利用指针访问到每一个元素的地址
迭代实现选择排序冒泡排序
选择排序 冒泡排序 三快速排序时间复杂度为 n *log n
快速排序本质就是定义一个基准值通过从右向左找最大值再从左向右找最小值交换然后循环直至begin和end相等时此时划分两个部分然后分别定义基准值重复找数换位的步骤直至beginend的时候结束。
快速排序示意图 快速排序的程序
void quickSort(int *begin,int *end) //快速排序
{int *p begin; //记录开始的位置和最右边的位置int *q end;int *k begin; //第一步确定基准值a[0]if(beginend) //结束递归的条件{return ;}while(beginend) //begin 和 end 不能反过来而且直到它们相遇停止循环{while(begin end *end *k) //第二步从右边最后一项开始找找到第一个比基准值小的值{--end; //没找的话向前移位}while(begin end *begin *k) //第三步从左边【】开始找找到第一个比基准值大的值{begin; //没找到向后移位}swap(begin,end); //最大值最小值都找到了进行它俩的换位} //回到循环起始点接着找最大值最小值swap(begin,k); //此时相遇位置上的值与基准值交换quickSort(p,end-1); //针对数小的一部分此时为开始的【】为地址中的新quickSort(begin1,q); //针对数字大的部分此时为地址为开始的
}四指针 一维字符型数组
char *p s ; s就是数组首元素的地址
int puts(const char *s); const char *S; const int a;//只读变量 int a10; const int*pa //表示基类型 为只读 p---指针变量--本身的类型int* a---int型变量--本身类型int
const char * 的好处 1.可以接收字符数组名也可以接受字符串常量提高了参数的适用性 2.避免了可能出现的修改的操作也可以将运行时的错误提前到编译时发现 四相关程序
1.数组的逆序指针。
void nixuArray(int *begin, int *end) //逆序纯指针形式
{while(beginend){int t *begin;*begin *end;*end t;begin;--end;}}2.插入排序
void paixuArray(int *begin,int *end) //插入排序纯指针
{int *p begin;int *q NULL;for(pbegin;pend;p){int t *p;qp;while(qbegin*(q-1)t){*q*(q-1);--q;}*qt;}
}3.二分查找
int *binaryD(int *begin,int *end,int n) //二分查找
{int *midNULL;mid begin(end-begin1)/2;int *retNULL;if(beginend){ret NULL;}if(*midn){endmid-1;ret binaryD(begin,end,n);}else if(*midn){beginmid1;ret binaryD(begin,end,n);}else{ret mid;}return ret;
}4.输入/输出字符串
void Gets(char *s) //输入字符串
{do{*s getchar();}while(*s!\n);s--;*s\0;
}void Puts(const char *p) //输出字符串
{while(*p!\0){putchar(*p);p;}putchar(\n);
}5.相关输出
int main(void)
{int a[5]{1,2,4,3,5};int i0;//nixuArray(a,a4); //逆序的输出//paixuArray(a,a4); //排序的输出(charu)//int x3;//int *ret binaryD(a,a4,5);//printf(%d\n,*ret); //二分查找的输出//for(i0;i5;i)//{//printf(%d,a[i]);//}//putchar(\n);return 0;
}