网站开发毕业设计代做,工信部清理未备案网站,域名后缀cn做网站,学做网站论坛可信吗#x1f308;个人主页#xff1a;小田爱学编程 #x1f525; 系列专栏#xff1a;c语言从基础到进阶 #x1f3c6;#x1f3c6;关注博主#xff0c;随时获取更多关于c语言的优质内容#xff01;#x1f3c6;#x1f3c6; #x1f600;欢迎来到小田代码世界~ #x…
个人主页小田爱学编程 系列专栏c语言从基础到进阶 关注博主随时获取更多关于c语言的优质内容 欢迎来到小田代码世界~ 喜欢的小伙伴记得一键三连哦 ૮(˶ᵔ ᵕ ᵔ˶)ა 目录 一. 解决疑问
二.数组名的理解
二.使用指针访问数组
三.传参的本质
四.一维数组传参的本质
五.排序 六.assert断言
七.二级指针 八.指针数组
九.字符指针变量
十.数组指针
十一.函数指针
十二.函数指针数组
十三.烧脑问题 一. 解决疑问
上次我们提出了在函数中我们学过函数形参是实参的一份临时拷贝也就是在函数中的形参再怎么改也不会影响实参那为啥会出现下面的情况呢 如果你想知道这个问题的答案那么你看完这篇文章你一定会发现问题的答案的。
二.数组名的理解 数组名就是数组首元素的地址 ☀特例1.sizeof中单独放数组名即sizeof[arr]中的不是数组的首个而是整个数组 ☀特例2. arr这里的数组是整个数组
又有在这里看出这三种方式没有区别那区别究竟在哪里? 从上述例子我们可以看出数组首个首元素的地址和整个数组的地址就会有明显的差别
二.使用指针访问数组
(*pi)(*arri)(pi)arri
p[i]i[p]arr[i]*p*i
三.传参的本质 为啥这个不起作用呢
形参是实参的一份临时拷贝但是本质是啥呢 由打开调试可知a,b,x,y的地址不一样这就比如我和你在不同的房间这个房间离得很远我和你也不认识那当然你做什么肯定不会影响我呀这里的同样是一个道理我们这样紫就更加的加深了我们对形参是实参的一份临时拷贝的理解了,我们现在学习了指针就可以进行修改喽 四.一维数组传参的本质 ⼀维数组传参形参的部分可以写成数组的形式也可以写成指针的形式。
五.排序 迈入算法的大门从排序开始从冒泡排序开始
视频 C语言冒泡排序和选择排序(这应该是讲的最详细的一个视频了) 思路
排序的构建方法有很多一种就是比较相邻的元素
举例
代码但是如果一组数是0,1,2,3,4,9,8,7,6,5按照升序去排序如果本身有的数字为有序那么再去 比较会导致效率降低我们引入count计数器发现按照上方的算法排序需要45次 我们可以用flag进行判断先假设有序如果有序就排序没序就跳出循环 六.assert断言 #define NDEBUG #include assert.h assert表示判断的意思 加入宏#define NDEBUG可以自动取消assert断言的使用在release版本会出现
七.二级指针 二级指针变量存放一级指针变量的地址int**paa **pa -可以找到a并把a的值给改变 八.指针数组 是一群指针放在数组里面构成的指针数组 指针数组举例int* parr[3] {arr1, arr2, arr3}; 可以用指针数组来模拟二维数组的实现
九.字符指针变量 int main() { char ch w; char *pc ch; *pc w; return 0; } 字符指针变量不可变在内存中申请空间时同一串常量申请的空间相同
十.数组指针
数组指针指向数组的指针eg int(*pa)[10]arr,解释pa是数组名*p是指这个是指针变量 有十个元素且指向的对象是int类型准确的说其类型是int*[10] 或这个是个数组指 针类型是int*[10]int*[10] []的优先级要⾼于*号的若是int*p[10]arr,则是指针数组 ⼆维数组传参本质上也是传递了地址传递的是第⼀⾏这个⼀维数组的地址 void test(int (*p)[5], int r, int c) ⼆维数组传参形参的部分可以写成数组也可以写成指针形式同样一维数组等同
十一.函数指针
指针指向的对象是函数
格式 举例
十二.函数指针数组 地址存到⼀个数组中那这个数组就叫函数指针数组 int (*parr1[3])();
十三.烧脑问题 通过以上的学习想必大家已经对这两个问题可以做出很好的解释 (*(void (*)())0)(); void (*signal(int , void(*)(int)))(int); 如果想知道答案请持续关注系列专栏c语言从基础到进阶
今天的分享到这里就结束啦如果觉得文章还不错的话可以三连支持一下您的支持就是我前进的动力