- 博客(24)
- 收藏
- 关注
原创 自定义类型:联合和枚举
我们可以分析得到:整型变量i和字符变量c占据同一块空间,而c占据的就是i的第一个字节,当我们对c进行修改时,也就是对i第一个字节的修改,所以当我们把c修改为0x55时,i也就跟着改变了。首先我们对un初始化为0,然后进行两次赋值,给i赋值了16进制数11223344,把c赋值为了16进制数55,如果i和c共用相同的空间,那么我们在更改c的时候,i应该也会跟着改变。可以看到,联合体成员的地址是相同的,并且联合体本身也和联合体成员的地址相同,基本上就可以说明,联合体开辟空间时,所有成员共用一块空间。
2024-11-10 14:07:26
974
原创 自定义类型:结构体
要熟悉对齐规则先找对齐数,在找存放的位置对齐数是以首元素地址,即偏移量为 0 的地址为起始位。每一个结构体成员在找存放的的地址的位置时,都是从偏移量为 0 的地址为起始位开始算起。而不是以上一个结构体成员的末地址为起始位开始算起。如果有数组,则按数组的元素大小和类型去占取。例如:char[ 5 ],五个元素,每个元素大小为1 ,占5个字节。位段中的位指的是二进制的位(bit位)。位段的成员必须是int、unsigned int或signed int,在C99中位段成员的类型也可以选择其他类型。
2024-11-04 07:30:00
817
原创 数据在内存中的存储
是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容保存在内存的低地址处。是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容保存在内存的高地址处。
2024-10-26 23:49:12
272
1
原创 字符函数和字符串函数
在不同的系统和C语言标准库的实现中都规定了一些错误码,⼀般是放在 errno.h 这个头⽂件中说明 的,C语言程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动 的时候errno是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会讲对应 的错误码,存放在errno中,而⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是 有对应的错误信息的。空白字符:空格‘ ’,换页‘\f’,换行‘\f’,回车‘\r’,制表符‘\t’或者垂直制表符‘\v’
2024-10-13 07:00:00
1053
原创 深入理解指针(4)
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。qsort是C语言中的一个库函数,这个函数是用来对数据进行排序,size:base指向数组中一个元素的大小,单位是字节。第二部分是对于循环的模拟,根据if的条件判断是否交换。是对于if里条件的函数调用模拟,判断返回的值。base:指向待排序数组的第一个元素的指针。
2024-08-17 13:41:50
429
原创 关于%和\后加字母数字的含义
d—打印整数%s—打印字符串%c—打印字符%f —打印小数如果要得到的结果是小数的话,那么“/”两边至少有一个是整数“/”算出来的是商取模“%”得出来的是余数,就是商在上面,余数在下边。
2024-07-23 10:10:40
244
原创 深入理解指针(1)
上面代码第6行就使用了解引用操作符,*pa的意思就是通过pa中存放的地址,找到指向的空间,*pa其实就是a变量了;上述代码n是不能被修改的,其实n本质是变量,只不过被const修饰后,在语法上加了限制,只要我们在代码中对n进行修改,就报错,没办法直接修改n。在指针中有一种特殊的类型是void*类型的,可以理解为无具体类型的指针(或者叫泛指针),这种类型的指针可以用来接受任意类型地址。这里pa左边写的是int*,*是在说明pa是指针变量,而前面的int是在说明pa指向的是整型(int)类型的对象。
2024-07-22 20:50:43
749
原创 操作符详解
2 1 余数为1。而2进制和10进制也是类似的,只不过2进制的每一位权重,从右向左是:2^0,2^1,2^2…接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。、++、--、&、*、+、-、~、sizeof、(类型)对于移位运算符,不要移动负数位,这是个标准未定义的。又下往上依次所得的余数就是10进制转换出的2进制。二进制中最高位的1位被当做符号位,剩余都是数值位。补码得到原码也是可以用:取反,+1的操作。
2024-07-17 17:37:17
951
原创 函数的讲解
1.函数的语法形式ret_type fun_name(形式参数)ret_type是函数返回类型fun_name是函数名括号中放的是形式参数ret_type是用来表示函数计算结果的类型,有时候返回的是void,表示不返回fun_name是为了方便函数函数参数就相当于,工厂中送进去原材料,函数的参数也可以是void,明确表示函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。{}括起来的部分被称为函数体,函数体就是完成计算的过程。
2024-06-04 18:38:56
978
原创 随机数生成
程序中再调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,每次生成的随机序列也就变化起来了。time函数的参数timer 如果是非NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存中带回去。而这个时间函数则是time,函数原型:time_t time (time_t* timer)返回的类型是time_t类型的,time_t类型本质上其实就是32位或者64位的整型类型。
2024-04-20 16:06:31
717
原创 分支和循环
条件操作符的计算逻辑是:如果exp1是真,exp2计算,计算的结果是整个表达式的结果;如果exp1为假,exp3计算,计算的结果是整个表达式的结果。表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。for和while在实现循环的时候都有初始化、判断、调整这三个部分,for部分比较集中而while部分是分散的!||:逻辑或运算符,或者的意思(两侧至少有一个表达式为真,则为真,否则为假)&&:逻辑与运算符,并且的意思(两侧表达式都为真,则为真,否则为假)三、条件操作符(三目操作符)
2024-04-15 23:08:14
790
原创 整蛊舍友1——电脑关机指令
3.大家在使用VS时VS认为scanf是不安全的,所以VS建议使用scanf_s但是我们不接受这个建议,从而要在代码第一行加上#define _CRT_SECURE_NO_WARNINGS就可以运行代码了。1.两个字符串比较相等时不能使用==,应该使用strcmp,头文件使用 #include"string.h"。2.system——库函数,可以执行系统指令,头文件使用 #include"stdlib.h"。
2024-04-13 14:13:13
410
原创 C语言的数据类型和变量
首先对于我们初学者来说只用先了解C语言本身就有的内置类型,而自定义类型是属于自己创造编程的,对于我们初学者来说先不用了解。输入:scanf("%c", );输出:printf("%c",& )输入:scanf("%f", );输出:printf("%f",& )输入:scanf("%d", );输出:printf("%d",& )类型说明符:float(单精度)4字节;类型说明符:int(-32768——32767);3.单目操作符:++、--、+、-
2024-04-10 23:29:40
176
原创 First blog
大家好,我是IT新人刘朋昊,很高兴能加入IT行业这个大家庭,我是一个普通但又不甘平凡的男生,希望在未来发表博客中不足的地方请多多点出,我也会及时改正。在未来学习编程上,我会采取多学多练的方法,掌握编程的思想架构,对于编程要有灵活的思维体现,不死记硬背。对于刚接触IT的我来说,现阶段的目标便是在2024下半年的蓝桥杯比赛中获得省级一等奖。因为刚接触编程在接下来的学习中我会用每周12+h的时间来学习它。希望在未来的时间里请多多指教,来监督、见证一个民办二本学渣成长。谈起未来梦想,那就是进入大厂工作。
2024-03-30 22:35:00
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅