自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 记录学习C语言第十二次

柔性数组结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员例如:typedef struct st_type { int i; int a[0];//柔性数组成员 }type_a; 由于结构体最后一元素创建的数组大小是未知的,所以在后续开辟的动态空间时,可以根据需求使用malloc函数和realloc函数给数组开辟指定大小的空间,增加了灵活性,故称之为柔性数组成员。柔性数组特点:1、结构中的柔性数组成员前面必须至少一个其他成员。 2、sizeof 返回

2021-07-29 22:14:54 52

原创 记录学习C语言第十一次

动态内存分配malloc函数void *malloc(size_t size)函数定义:开辟一个连续内存块在使用malloc函数调用完空间后,使用free(*p)函数释放动态开辟的空间,但此时p所指向的内容(p存放的地址)并没有释放,因此需要在后面将p改为空指针NULL注:空间开辟失败会返回空指针NULLcalloc函数void* calloc(size_t num,size_t size)size_t num:元素个数size_t size:每个元素长度,单位...

2021-07-27 23:17:34 77 1

原创 记录学习C语言第十次_2

枚举(列举可能取值—常量)格式:enum 枚举名{ 成员名1,//0成员名2,//1 ........... // n};(最后一个成员名不需要“,”隔开)默认成员名为一常量,而且自上而下值依次为0,1,2......,但是在定义成员名的时候,初始值可以自行对其更改枚举的大小我们在给枚举初始化对象时,对象为枚举成员名之一,而默认成员名初始化为一整型常量,因此大小应为4字节枚举的优点1. 增加代码的可读性和可维护性 ...

2021-07-26 22:28:46 49

原创 记录学习C语言第十次_1

结构体内存对齐规则如下:注:类如gcc、Linux编译器下无默认的对齐数,此时对齐数直接等于该结构体成员大小的较小值1、第一个成员在与结构体变量偏移量为0的地址处2、其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处 对齐数=编译器默认的对齐数与该成员大小的较小值在vs编译器中,对齐数默认为83、结构体总大小为最大对齐数(每个成员变量都有其对应的对齐数)的整数倍4、如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构...

2021-07-26 17:40:42 73

原创 记录学习C语言第九次

printf("%p\n", p + 0x1); p表示为结构体指针,+1表示跳过一个结构体大小,即为20个字节,0x100000+0x000014=0x100014printf("%p\n", (unsigned long)p + 0x1); 强转换后为长整型,+1后结果为0x100001printf("%p\n", (unsigned int*)p + 0x1); 强转换为无符号整型指针,+1表示跳过一个无符号整型指针大小,即为4个字节,结果为0x100004解析:1、a为...

2021-07-20 23:43:28 49

原创 记录学习C语言第八天

//除了以下情况,数组名都表示是首元素地址 //1、sizeof(数组名)数组名表示整个数组 //2、&数组名 取的是数组整个数组,步长是数组总大小 int a[] = {1,2,3,4};//4*4=16 printf("%d\n",sizeof(a));// 16 sizeof(数组名)计算的是数组总大小 printf("%d\n",sizeof(a+0));//4/8 数组名表示首元素地址,a+0还是首元素地址 printf("%...

2021-07-19 23:27:13 47

原创 记录学习C语言第七次

转移表一般称呼函数指针数组为 转移表(即为主要用途)例如: int (*parr[10])()={函数名1,函数名2,....函数名x};指向函数指针数组的指针该指针指向一个数组,每一个数组元素都是函数指针回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的时间或条件发生时由另外的一方调用的,用于对改事件或条件进行响应。例.

2021-07-18 23:34:13 79 2

原创 记录学习C语言第六次

1、数组指针和指针数组用于存放数组的指针int* p1[10]:p1会与右边的中括号结合,说明p1是一个数组,数组类型为int*,所以是用于存放指针的数组,即为指针数组。(p1是一个数组,数组有10个元素,每个元素的类型是int*)int(*p2)[10]:p2先于*结合,说明p2是一个指针变量,然后指向大小为10的整型数组。所以p2是一个指针,指向一个数组,即为数组指针。(p2是一个指针,指针有10个元素,每一个元素为int)数组指针在二维数组时应用较多例如:void printf

2021-07-18 00:00:37 77

原创 记录学习C语言第五次

浮点型的数值存储方式与整型的方式不同IEEE(电气和电子工程协会)中的754中规定:1、由于M值在1和2之间,所以第一位始终为1,所以在计算机进行存储时,会把这一位舍去,在读取过程中再把1加上(此时精度也可以得到提升)。2、指数为E:(E为无符号整数)(1)数据存入时由于实际表示过程中,指数E可以为负数,因此在存入时必须加上一个中间数(E为无符号整数),32位的中间数为127, 64位的中间数为1023 。例如,在32位中存储 2^(-1) E应为-1+127=126在v..

2021-07-16 17:30:12 123

原创 记录学习C语言第四次

数据的存储1、整数在计算机内存储的为二进制的补码 CPU中只存在加法器,所以加减法可以统一处理 可以将符号位和数值域统一处理2、大小端整数存储在计算机内存中显示与实际表示相反大端存储模式:数据的低位保存在内存的高地址中,数据的高位保存在低地址中小端存储模式:数据的低位保存在内存的低地址中,数据的高位保存在高地址中在vs环境中,使用的是小端存储模式: 现实表示: ...

2021-07-15 23:14:20 61 2

原创 记录学习C语言第三次

数组地址越界赋值运行这样的代码:给定 一个数组,利用for循环,每次循环打印hehe以及使得数组中一元素置零运行结果:进入打印hehe死循环栈区的使用规则:1、先使用高地址空间,再使用低地址空间2、数组随着下标的增长,地址是由低到高变化分析:栈区先使用高地址空间,所以此处的变量“i”的地址空间比数组arr[10]使用的空间要高,在执行for循环到变量“i==12”的时候,就有可能使得“i”和arr[12]的地址空间重合,继而越界赋值0给变量“i”,for循环重新执行,从而进.

2021-07-14 23:16:28 65 4

原创 记录学习C语言第二次

利用代码实现:输入两个整型数字,比较二进制中不同的位数有几个,例如:1999和2299中不同的位数有7个。利用异或的特性“相同为零,相异为1”,将得到的二进制数在计算为“1”的个数。运行结果:利用代码实现:输入数字,显示相应的乘法表。例如:输入9,输出九九乘法表。运行结果:...

2021-07-13 22:23:54 40

原创 记录学习C语言第一次

游戏三子棋的实现1:棋盘显示的初始化: 将打印的棋盘全部清零,即全部显示为空格(打印出来的内容不可见)显示棋盘函数的实现思维的构建:1.将棋盘显示拆解为:1*显示每一行的输入数据,即“空格+字符+空格+|” 2*显示分割行,即“---+|”2.先用第一个for循环构建出显示的每一行数据,每一行数据显示完后都需要换行3.在第一个for循环里,再构建需要显示的列数,确定需要打印分割行的行数...

2021-07-06 22:46:02 46

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除