- 博客(14)
- 收藏
- 关注
原创 指针结尾+字符函数和字符串函数
cpp为(2.)中c+1的地址(没有因为3.中cpp-2而改变,只有++cpp才改变),cpp-1为c+2的地址。这里再次++cpp,相当于c+2的地址加上1变为c+1的地址),*++cpp为c+1,--*++cpp为为c+1-1=c,*--*++cpp为“ENTER”首元素。//将参数传去的大写字母转小写。*(cpp-1)为c+2,*(cpp-1)-1为c+2-1=c+1。2.++cpp为c+1的地址(1.的++cpp为c+2的地址,所以cpp[-1][-1]+1=*(*(cpp-1)-1)+1。
2024-10-24 19:19:16 768
原创 学习指针6
/a[0]没有单独放在sizeof内部,a[0]表示第一行的这个一维数组首元素的地址=&a[0][0],//a表示首元素的地址,那就是第一行的地址,*a就是第一行,*a=*(a+0)=a[0],//&a[0]表示第一个元素的地址,&a[0]+1表示第二个元素的地址,4或8字节。//&arr[0]表示第一个元素的地址,&arr[0]+1表示第二个元素的地址,//&arr[0]第一个元素的地址,&arr[0]+1表示第二个元素的地址,//err-----------arr是首元素的地址,*arr表示首元素,
2024-10-20 20:29:43 850
原创 初学指针5
include---------->strcmp的头文件。#include---------->strcmp的头文件。#include---------->strcmp的头文件。#include---------->qsort的头文件。#include---------->qsort的头文件。#include---------->qsort的头文件。
2024-10-19 11:39:46 858
原创 初步学习c语言1(2)
又由于2由一位数字组成,故为1,printf("%d",printf("%d",printf("%d",43)));//int Add(int x,int y)//x,y为形参,只是形式上存在的,不会向内存申请空间,不会真实存在。结论: static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,存储在静态区的变量和全局变量是一样的,生命周期就和程序的生命周期一样了,//n1,n1为实参。//c语言在创建数组的时候,数组大小的指定只能使用常量,常量表达式。//休眠,单位是毫秒。
2024-09-16 23:45:05 353
原创 深入理解指针4
/signal函数有2个参数,第一个参数是int类型,第二个参数是void(*)(int)这样的函数指针类型,该函数指针能够指向的函数参数是int类型,返回类型是void。故 int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};//创建 int (*pfArr[4])(int ,int ) = {Add,Sub};//这种赋值,是把字符串中首字符的地址,赋值给p, ps存放的是首元素a的地址。&函数名,函数名 ----取到的都是函数的地址,它只有一个地址。
2024-09-15 20:31:11 1247
原创 指针详解3
这是因为,sizeof(数组名),sizeof中单独放数组名,这里的数组名表示整个数组的大小,计算的是整个数组的大小,单位是字节。我们这里使用的&arr[0]的方式拿到了数组第一个元素的地址,但是其实数组名arr本来就是地址,而且是数组首元素的地址。int ** ppa // *表示ppa是指针变量,int*表示ppa指向的pa为int*类型。等于1是因为,arr为数组首元素的地址,数组传参传的是首元素的地址,则为4/4=1.//这种赋值,是把字符串中首字符的地址,赋值给p, ps存放的是首元素a的地址。
2024-09-13 20:09:15 622
原创 指针详解2
3.指针变量不再使用时,及时置NULL,指针使用之前检查有效性----->只要是NULL指针就不去访问,同时使用指针之前可以判断是否为NULL。1-----(const放在*的左边)int const * p,const int * p。//num就不能被修改,只能读取它的值(报错)3-----const (*)两边都有 const int * const p。2-----(const放在*的右边)int * const p。NULL - 空指针----0,0也是地址,这个地址是无法使用的。
2024-09-10 20:35:33 534
原创 指针部分1
那我们通过取地址操作符(&)拿到的地址是一个数值,这个数值有时候也是需要储存起来,方便后期使用,那我们把这样的地址值存放在指针变量中。总结:即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在潜在风险的,建议不要写出特别复杂的表达式。指针变量的大小和类型是无关的,只要指针类型的变量,在相同平台(x64)下,大小都是相同的。pn的类型是:int*,*------说明pn是指针变量。int----说明pn指向的对象是int类型的。
2024-09-08 19:12:05 1180
原创 位操作符&,|,^,~
/111111111111111111111111111111111011 -5的补码。//111111111111111111111111111111111011 -5的补码。//~a就是对a进行按位取反。printf("交换前:a=%d b=%d\n",a,b);printf("交换前:a=%d b=%d\n",a,b);printf("交换后:a=%d b=%d",a,b);printf("交换后:a=%d b=%d",a,b);
2024-09-01 10:23:14 1475
原创 新手初步学生c语言的第5天----操作符的分类,二进制转十进制,十进制转二进制,二进制转八进制和十六进制,原码,反码,补码。
在计算机系统中,数值-律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理,同时,加法和减法也可以统一处理(CPU只有。此外,补码与原码相互转换,其运算过程是相同额外的硬件电路,2 7/2 余数1。2 3/2 余数1。2 62/2 余数0。2 31/2 余数1。2 15/2 余数1。2 125/2 余数1。反取为:1111101。
2024-08-24 11:25:07 167
原创 新手初步学习c语言的第4天----编程错误,函数递归
所编写的代码为.c(源文件)会编译成.obj(目标文件),编译时可能会有出现编译错误,比如少个分号(;)啥的,编译完后,就会链接头文件(.h),这时就可能发生链接错误,比如头文件没写或写错。假设Fact(n)就是求n的阶乘,那n的阶乘就可以写成n*Fact(n-1)进入死递归,导致栈溢出(Stack overflow)该函数有一个缺点,就是没有限制条件导致的死递归。就是函数自己调用自己。
2024-08-23 13:17:54 176
转载 初步学习c语言3----调试快捷键,监视,内存,练习
F11:逐语句,就是每次都执行一条语句, 但是这个快捷键可以使我们的执行逻辑进入函数内部。在函数调用的地方,想进入函数观察细节,必须使用F11,如果使用F10,直接完成函数调用。断点的作用是可以在程序的任意位置设置断点,打上断点就可以使得程序执行到想要的位置暂停执行,接下来我们 就可以使用F10. F11这些快捷键,观察代码的执行细节。F10:逐过程,通常用来处理一个过程, 一个过程可以是-次函数调用,或者是一条语句.调试-->窗口-->监视-->随便一个。调试-->窗口-->内存-->随便一个。
2024-08-22 12:52:54 115
转载 初步学习c语言2---扫雷
printf("还需要排查%d个位置\n",row*col-EASY_COUN-win);//用来存放布置好雷的信息。//用来存放排查出雷的信息。printf("很遗憾,此处是雷,被炸死了\n");//统计想,x,y坐标周围8个坐标雷的个数。printf("选择错误,重新选择\n");printf("请输入要排查的坐标:");printf("退出游戏\n");printf("-----扫雷------");printf("-----扫雷------");printf("请选择:");
2024-08-22 12:16:28 18
原创 初步学习c语言1
***************************************************对形参的修改不会影响实参。////2.while循环*****************************************************//1.switch语句*****************************************************////3.for循环*********************************************
2024-08-19 11:17:57 354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人