- 博客(25)
- 收藏
- 关注
原创 static关键字的用法
static修饰全局变量的时候这个全局变量的外部连接属性就变成了内部连接属性。其他的源文件(.c)就不能再使用到这个全局变量了.修饰函数和修饰全局变量同理 :static修饰全局变量的时候这个函数的外部连接属性就变成了内部连接属性。其他的源文件(.c)就不能再使用到这个函数了.这里的a用了static只会初始化一次。这里就会报错只能找不到g_val.
2023-12-23 20:55:06
323
原创 局部变量和全局变量在函数中变化
这里会改变a的值的,因为a是在全局里面定义的,函数改变的是全局变量的值,如果函数表达式如果是 int a然而不是int x 这里的值也不会发生改变,因为如果是int a 的话就会重新创建一个地址在函数里面,这个地址不等于全局变量的地址。这里的a的值是0和3的地址是一样的说明函数改变的还是全部局变量的地址,没有改变主函数a的地址,而a=4的值与其他两个不一样,同学肯定会问为什么不输出全局变量的值输出主函数的值呢?这里的a的值是不会改变的,这里就是局部变量与函数中a的关系;首先让我们来看一行代码。
2023-12-23 20:40:13
1962
原创 用c语言统计16~31岁各年龄段人数
这里有一个巧妙的地方那就是a[age-16]++这里是用来统计满足年龄是16~31岁每一个年龄段人的个数,比如年龄是17,就是a[1]=1,因为前面已经把数组a初始化成0了,就是a[17-16]=0+1;如此统计了17岁人的个数,两17岁就是2;后面的输出的否循环则是为a[age-16]准备的,i=16时,这里的i表示年龄,a[i-16]表示的是在i这个年龄的人数。这个问题首先要找到16~31之间的人,然后统计每一个年龄端的人数放到一个数组里面。
2023-12-13 11:32:08
1220
原创 puts和putchar的使用
putchar函数将数据以字符的方式在控制台输出。然而puts就是打印字符串了,遇到'/0'就会停止打印。putchar通过ASCLL码值97继续查找,然而ASCLL码值97的对应的字符是a,所以输出a。puts则是输出字符串。
2023-12-11 09:56:19
171
原创 C语言中整型常量总结
十六进制:以0x或2X开头,后面跟随0-9以即a-f或A-F(因为叫十六进制所以他的范围只能满足16,数字不够字母来补),如:0x29,0XAF。八进制:都是以0开头,后面跟随0-7数,一般没有负数,如027;下面这些是错误的:-012(有负号)028(后面的数不在0-7的范围内)十进制:开为0,后跟随0-9的数字 如:289;
2023-12-11 09:43:52
112
1
原创 c语言中求字符串长度的三种方式
三,不创建临时变量计算字符串长度(递归)二,创建临时变量计算字符串长度。四,指针减指针求字符串长度。一,库函数strlen。
2023-11-18 11:30:53
2901
1
原创 数组指针和指针数组的区别
数组指针和指针数组的区别是:数组指针是一个指针用来存放地址的,而指针数组是一个数组,数组里面的元素是指针。指针数组:是用来存放指针的数组;数组指针:用存放数组地址的指针,int (*p)=&arr;
2023-11-10 09:46:36
27
原创 c语言中左移操作符和右移操作符
左移操作符是将补码向左移,<<1向左移动一位,缺就补0。因为此时的3是正整数,所以原码和补码一样,00000000000000000000000000000011。反码:111111111111111111111111111111111100(反码就是原码的符合位不变,其他位就是按位取反就是反码)向左移一位就是00000000000000000000000000000110,所以结果是6。正数在二进制的表示的原码,反码,补码都是一样的,整数在二进制的表示有3种:原码,反码,补码。
2023-10-25 13:54:30
87
1
原创 C语言使用递归实现汉诺塔
n不为1时,要把n--1的盘子移动到中转位置,这个时候pos2就过程中的目的位置了,pos3成为位置,直到移动盘子数量为1的时候运行move(pos1,pos3)函数,pos1->pos3,这里的pos3就是目的位置了。当n-1的盘子全部移动到pos2位置上的时候,pos2成为开始位置了,pos1中转位置,pos3目的位置。关于Hanoi的函数的解析,Hanoi(盘子数量,开始位置,中转位置,目的位置)。if判断n为1的时候,盘子直接从开始位置到目的位置。pos1->pos3。
2023-10-10 10:59:32
18
1
原创 C语言中递归函数
这里的函数调用传的字符串首元素的地址,也就是a的地址,进入my_strlen函数后进行if判断a!这里要注意的是str+1代表地址是b的地址了,b!进行进入if判断,然后又调用自己,直到if判断为假,输出0;就是当str代表的是c的地址的时候调用了my_strlen(str+1),my_strlen(str+1)的返回值0要返回来,str是c的地址的上一级调用是str是b的地址时候,返回到b所在的函数里面来。递归函数要注意的是要有一个判断条件来就是调用,返回的值也要不断的接近判断条件。
2023-10-09 13:12:03
26
1
原创 C语言中定义一个二分查找的函数
所以在函数内部计算一个函数参数部分的数组元素个数是不靠谱的。这里的数组传参是,传的是数组首元素的地址,而不是整个数组。
2023-09-27 11:29:15
21
1
原创 函数的使用方法,以及规则
输出结果4321,因为printf返回的是输出结果的个数。定义函数时返回值什么类型,就定义什么类型的函数。链式访问,必须要有返回值才能使用。函数可以嵌套调用,不能嵌套定义。
2023-09-27 11:15:19
34
1
原创 c语言中传值调用和传址调用的区别
z=x这里表示的地址和值全部进行交换了,但是地址里面所存的值的没有改变,所以对函数外面的值没有发生改变。*x表示取这个地址里面值,那么z=*x表示的是地址里面的值进行改变了,所以函数外面的值发生的改变。传址调用是通过实参对形参进行传送地址,地址里面的值改变了。实参也会改变因为都是一个地址,总结:要想改变一个变量所包含的值,必须改变这个变量所在地址里面的值。这两个代码看着差不多,都是用的传址调用,然而区别很大。传值调用是通过实参对形参进行传值,不会改变实参。
2023-09-26 11:14:38
95
1
原创 c语言中对*a &a a的认识
a和&a的区别,*a表示取一个地址里面的一个数,然而&a表示这个地址,地址里面也有数,所以说表示的是一个整体,a表示这个数字的本身,包括地址还有数。这里交换是位置和值全部交换了,但是指针存储的值没有变,但是原来的这个数的地址还有值都没有改变。int* a=&a,表示的取这个地址的数。
2023-09-24 11:26:12
548
1
原创 使用goto语言制作一个关机程序
首先我们要制定一个关机程序,让用户输入一个值,才能取消关机,在一分钟内,还没有输入正确就会强制关机,shutdown -s是关机程序 -t是设置关机程序 60是设置多少秒后关机,这里使用goto语言制定一个循环,使程序一直运行,system是控制台输出语言。
2023-09-23 11:17:39
29
1
原创 c语言中goto语句的使用
在程序前面定义一个again,输入goto again,程序就会跳转到again程序那里,但是要注意的是goto函数只能在所在的函数内部进行执行,不能跳转到函数。goto语句是指定程序跳转。
2023-09-23 10:58:02
72
1
原创 c语言中猜数字游戏的实现
通过使用rand函数进行随机输出值,0-32767的随机值,为了让随机值不重复啊,使用sarnd方法以及时间戳的不断改变,使随机值不会重复,每次使用前使用一次sarnd方法。使用while循环进行猜数字主要程序,直到猜对,才会break退出循环,程序结束。
2023-09-23 10:50:54
36
1
原创 c语言中二分查找
二分查找的原理就是,前题必须是一组有序的数组排列的,取数组最左边的下标为left,最右边的下标为right,通过左右两边的下标计算中间mid,比较查找的值与中间的大小,如果比中间的值大,继续左边的下标继续右移动,移动到mid的右边一位,如果比中间的值小反之,这样继续比较可以至少查找的数量,提高查找速度,直到找到要查找的数。
2023-09-22 11:16:42
23
原创 c语言中do while循环语句
do while循环至少执行一次,开始直接进入循环,然后继续判断,结果为真继续进入循环,直到结果为假结束循环。用do while打印1-10;
2023-09-20 11:24:44
63
1
原创 for循环的一些规则,以及其他输写方法
for的循环变量,最好不要在循环内部进行修改,会造成数据混乱,数据出现错误。for循环中初始化,判断语句,调整部分都是可以省略的。for循环中判断语句被省略,意味着判断会恒成立。for循环中初始化值省略的缺点。for循环的其他书写方式。
2023-09-20 11:06:00
33
1
原创 c语言中for循环的使用
循环的步骤是先是i=1初始化部分,然后进入i<10判断部分,为假跳出循环,判断结果为真,进入循环内部,进行输出,然后进入i++调整部分,然后进入i<10判断部分,一直这样直到i<10为假循环结束。i<10是判断语句,判断循环什么时候终止。i=1是初始化,用于初始化循环变量的值。i++是调整,用于循环语句的调整。
2023-09-20 10:46:16
53
1
原创 c语言中循环语句中break和continue的区别
break用于跳出整个循环,而continue跳出本次循环,本次循环后面的代码也不运行,而是进入到循环的开始的地方。比如while循环中,contianue跳过本次循环以及后面的代码,直接运行while的判断部分,进行循环。在for循环中continue跳过continue后面的代码,直接进入到for循环表达式部分,继续进行循环。在while循环案例代码如下。
2023-09-20 10:10:35
38
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人