- 博客(20)
- 收藏
- 关注
原创 学姐说学过c语言之后就可以速成python所以我来试试
def qiu(a,b): #有冒号print(a+b)print(a+b)#不需要返回值#不需要执行函数之后会怎么样。
2026-03-12 12:08:16
372
原创 17.联合体和枚举
联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)。最大对齐数是,先跟默认对齐数比较取小 之后 的 最大。联合体也是由一个或者多个成员构成,这些成员可以是不同的类型。printf("灯坏了\n");因为联合的成员是共用同一块内存空间的,这样一个联合变量的大小,而且不要在前面加char或者是int 是不对的 不对的 不对的。char的对齐数是1 int的是4 所以最大对齐数是4。short对齐数是2 int是4 最大对齐数是4。
2026-01-17 09:55:54
905
原创 16.c语言结构体
结构体 (struct)是一种用户自定义的复合数据类型(有些书上也叫作:聚合数据类型),允许将多个不同类型的数据项组合成一个逻辑相关的数据单元。可以将结构体看作是一个包含了一组变量的集合,这些变量被称为结构体的成员 (member) 或字段 (field)。一个人,有很多种不同的信息,就可以构成一个结构体。
2026-01-17 09:55:16
923
原创 15.c语言内存函数
补:getchar() 键盘输入。读这个字符的ascii码putchar() 括号里直接放一个字符,或者这个字符的ascii码。直接输出这个字符gets() 键盘输入。读字符串的地址。似乎已经爆炸了,说现在要用fgetsputs() 括号里直接放字符串,就会打印字符串,然后后面自动加一个/n换行。printf加/n的作用gets(arr);puts(arr);return 0;结束之前:操作字符的函数 islower。
2026-01-16 18:09:29
964
原创 14.大小端字节序
在计算机内存中或在数字通信链路中,由多个字节组成的数据的字节排列顺序。简单来说,就是当一个数据大于一个字节时(例如,一个int类型通常是4个字节),如何在内存地址中排列这些字节的问题。十六进制转到二进制存四个字节。一个字节八个比特位。44 33 22 11(理论上一个位置是八个比特位,现在写十六进制是为了方便看)是怎么存的打断点 监视 取地址是44 33 22 11来存的 (低地址——>高地址)后面还有四个字节 55 00 00 00。
2026-01-16 17:00:07
320
原创 13.字符函数和字符串函数的使用与实现
这个是,strcpy返回值的问题。这两个一样,就是说,strcpy的返回值,就是目的地(目标空间)的地址,打出来是abcdef的原因是,现在这个目的地里面,已经拷贝上src了,知道吗,所以输出的是abcdef。你以为,写src[i]指的会是字符串src的i位置的项,但是其实不是的。//就是它这个代码的逻辑就是逐字比较,并且在相同的时候检查是不是这个字符串的结束符\0.如果目前是一样的话,就进while循环,只要出现不同了,就不会进循环了(一短一长的情况,到一个字符串结束的时候就不一样了,就不会进循环了。
2026-01-12 22:31:04
1005
原创 12补.函数指针
/add和&add是等价的,所以add(1,2)和p(1,2)是一样的。和解引用也是等价的。// //需要定义一个指针变量,这个变量可以保存函数的地址(函数指针)// //int (*p)[] 数组指针,可以说类似吧。直接打印函数和打印函数的地址是一样的。
2026-01-06 17:42:37
185
原创 12.c语言指针高阶
/或者*(arr + i);//都是一样的意思。你品吧。int b = 20;int c = 30;return 0;注意注意注意:int* tmp =arr[i];//或者*(arr + i).这里不要写成&arr[i]。因为你定义的是指针数组里面的元素已经是地址了就不要不要不要再取一次地址。
2026-01-04 22:31:01
487
原创 11.c语言指针进阶
虽然str是指针,但是strlen的参数要求就是const char*.strlen接收一个指向字符串首字符的指针,然后从该地址开始逐个遍历字符,直到遇到\0结束,统计字符串里面字符的个数。为什么strlen后面的括号里可以直接装str,输出的结果也是5,str现在不是指针变量吗,里头的内容不是地址吗。的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。的右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指针指向的内容,可以通过指针改变。//输出的个数不包含\0,是5。
2026-01-02 19:09:33
733
原创 10.c语言指针初阶
p+1是一个地址,这里的加1相当于加了四个字节,从数组下标为0的位置加到了数组下标为1的位置。用%p输出的是地址。在32位系统下,一个4字节的指针,用十六进制表示就是一个八位的十六进制数。sizeof(arr)这时候计算的是指针变量的字节大小,64位系统下占8字节,32位系统下占4字节。记得占位符用原来变量的,是int就用d,是char就用c,不要用p了。不能直接换指针的地址变量的,换的是里面装的东西。此时的形参只是拿到了实参的值,形参只是实参的一份拷贝。结果是3,刚好是两个数在数组里,中间隔的数的个数。
2026-01-01 23:19:17
656
原创 9.c语言递归详解
重点:终止条件很关键。弄错了或者没弄会导致栈溢出。他说起始条件就是终止条件,我再看看吧。思路:起始条件=终止条件,n=1.sum(n) = n + sum(n - 1)递归的过程中,递和归是两个动词。既要递,又要终止条件来归。面试的时候不要用递归来写斐波那契。重复计算,效率变低。他说,后续的二叉树,还有一些算法,都要用到递归。思路:%10,/10 这个是逆序的,你见过的吧。所以n == 1非常重要,是终止条件。顺序很重要,研究你自己的程序去。例:用递归写N的阶乘。顺序就是倒过来用递归。
2026-01-01 17:24:48
283
原创 88888888.调试
Debug(调试版本): 它包含调试信息,并且不作任何优化,便于程序员调试程序;程序员在写代码的时候,需要经常性的调试代码,就将这里设置为debug,这样编译产生的是debug版本的可执行程序,其中包含调试信息,是可以直接调试的。Release(发布版本): 它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
2025-12-30 22:47:58
275
原创 7.C语言函数
ret_type fun_name(形式参数)//函数体ret_type是函数返回类型 得到的结果的类型 容器的类型fun_name是函数名括号里放的是形式参数 完成功能需要的必要的数据{}括起来的是函数体 整个功能的核心 所做的动作功能:计算两个整数相加return sum;或者void//void的意思是无返回值类型,这样可以不用写return sum,写printf。功能:求一个整数n的阶乘。i <= n;return ret;或者。
2025-12-30 21:46:38
695
1
原创 4444。c语言逻辑控制详解。
+a的结果是2,非0,为真,所以if后的表达式为真,会输出冬季。for循环的执行顺序,第一次是表达式1,表达式2,循环体,表达式3。之后就是表达式2,循环体,表达式3,表达式1就没了,只用于变量的初始化。所以i到了5之后,就永远不会执行到i = i + 1那里了,永远都是5了,绕进去了。是执行顺序没有理解好的问题。原因是定义的变量类型是字符,空格和回车也是字符,就把空格和回车赋进b里去了,输入的那个b就相当于没用。表达式1用于循环条件初始化,表达式2用于循环结束时条件的判断,表达式3用于循环变量的调整。
2025-12-13 17:23:06
889
原创 3。运算符
反码是1111 1101,原码1000 0010,十进制数是-2。-5补码1111 1011 >>1 1111 1101(补码)——>1111 1100(反码)——>1000 0011(原码)-3。-1补码1111 1111 >>1 1111 1111 -1是特殊的,移完之后还是-1。0000 1010 >>2 0000 0010(2) 相当于10/2^2。//输出的结果是1.5。思路:1^1=0 2^2=0 0^3=3——>1^2^3^2^1=3。符号位是0就补0,是1就补1。
2025-12-06 17:00:43
625
原创 222222。
能表示的最大负数 1111 1111(补码)(因为内存里存的是补码)——原码1000 0001—— -1,最小负数 1000 0000(补码)——反码0111 1111——原码1000 0000 -0?意思是9.9在c语言里默认是用double的,但是现在用的是float。比如上面这个程序,如果输入1 2,输出的结果就会是1,-858993460。就是个怪玩意是错的。因为你的格式是无符号的,而且它又是负数,符号位上的1,就会被当成是数值计算。2(就是在输入的时候中间加上一个空格),是可以正常输出1,2的。
2025-12-02 20:54:08
768
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅