- 博客(12)
- 收藏
- 关注
原创 C语言 - 构造类型
定义:我们一般情况下,定义常量使用宏定义(#define 宏名称 值),但是宏定义非常适 合没有关联关系的常量,但是有时候可能需要对一组拥有关系的量进行定义,比如 周一~周日,1月~12月等等,使用宏定义就不是很清晰,这个时候就需要使用枚举。·定义:使几个不同的百年来占用同一段内存的结构,共用体按定义中需要存储空间最大的 成员来分配存储单元,其他成员也是用该空间,他们的首地址是相同的。(2)全局位置的结构体名和局部位置的结构体名可以相同, 就近原则(和普通变量的定义同理)
2024-08-15 17:36:11
1074
原创 C语言指针(3)
函数功能:C库函数void*calloc(sizeof_t nitems,size_t size)分配所需的内存空间,并返 回一个指向他的指针,malloc和calloc之间不同点是,malloc不会设置内存为 0,而calloc会设置内存为0。·说明:·void*是一个指针类型,但该指针的类型数据不明确,无法通过解引用获取内 存中的数据,因为void*不知道访问几个内存单元。(3)返回值类型:viod*:该函数返回一个指针,指向已分配大小的内存,如果请求失败,返回NULL。
2024-08-14 08:57:36
712
原创 C语言指针(2)
注意:1.字符数组在创建的时候,会在内存中开辟内存空间,内存空间可以存放字符数据,字符指针在创建的时候,需要依赖于字符数组,字符指针在内存中开辟的内存空间中,存放的是数组元素的内存地址,字符指针的创建依赖于字符数组,字符数组可以独立存在,二字符指针不能独立存在。注意:·在函数中不要直接返回一个局部变量的地址,因为函数调用完毕后,局部变量会被 回收,使得返回的地址就不明确,此时返回的指针就是野指针。·字符数组由元素组成,每个元素中存放一个字符,而字符指针变量中存放的是地址,也能作为函数 参数。
2024-08-12 18:55:08
970
原创 C语言---指针(1)
系统为了内存管理的方便,将内存划分为一个个的内存单元(1个内存单元占1个字节),并为每一个内存单元进行了编号,内存单元的编号称为该内存单元的地址,一般情况下,我们每一个变量都是由多个内存单元构成的,所以每一个变量的内存地址,其实就是这个变量对应的第一个内存单元的地址,也叫首地址。·引用传递:一般发生在函数形参类型为数组,指针这样的类型,他的传递一般是实参将自 己内存的首地址复制一份给形参,也就是。·指针变量只能指向同类型的变量,借助指针变量访问内存,一次访问的内存 大小是取决于指针变量的类型。
2024-08-09 19:12:51
1127
原创 C语言--函数
概念:·形参(形式参数):函数定义时指定的参数,形参是用来接受数据的,函数定义时,系统不会为形参申请内存,只有当函数调用时,系统才会为形参申请内存,用于存储实际参数,并且当函数返回,系统会自动回收为形参申请的内存资源。被调函数返回给主调函数的结果数据(可以是变量、常量、表达式、只要是有确定值即可),返回值类型一般情况下需要和函数中return语句返回的数据类型保持一致,如果不一致,以函数定义时指定的返回类型为标准,也就是吧返回值类型和实际返回值可以存在自动转换或者强制类型转换。函数一定是先定义,后使用。
2024-08-06 08:51:47
959
原创 C语言--数组(一维数组、二维数组、字符数组)
注意:·数组可以部分初始化,也就是可以给数组中前几个元素初始化,未被初始化的元素系统将自动初始化,如0,如果定义数组时,为指定数据容量,则系统会根据初始化元素的个数来决定数组容量。举例:int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}} 等价于 int arr[][] = {{1,2,3},{4,5,6},{7,8,9}};概念:元素类型为char字符型的数组,字符数组往往是用来存储字符串数据的,需要注意的是,我们C语言中的字符是字节字符。
2024-08-05 09:04:13
1171
原创 C语言循环结构
goto只能在同一个函数中跳转,goto会破坏掉代码的结构,同时会降低代码的可读性,在实际开发中,不建议使用。总结:(1)for语句使用语法规则上,降低/避免因为忘记循环条件更新操作,而引起的产生无限循环的几率。(2)用在循环中(while、do...while、for),提前结束循环,也就是结束整个循环。表达式1:是循环变量,需要赋初始值,循环变量可以是列表,多个循环变量使用逗号分隔。类型:①无限循环(死循环),程序设计中尽量避免(程序中的无限循环必须可控)循环实现的三要素:循环变量初始化;
2024-07-31 14:04:25
1053
原创 C语言设计结构及输入输出
输入输出的内部采用的缓冲机制,也就是当我们用scanf()输入数据时,并不是直接将键盘录入的数据存储到内存变量中,而是系统会先去输入缓冲区查看是否又符合类型的数据,如果存在将直接输入缓冲区中的数据到内存变量,此时就不用键盘录入,否则才需要键盘录入复合类型的数据。相同道理,当我们使用printf()输出数据时,也并不是直接将内存变量存储的数据输出到输出设备,而是先存储到输出缓冲区,当输出缓冲区被充满,或输出缓冲区中出现换行符,或者执行fflush(),才会将输出缓冲区的数据输出到标准输出设备。
2024-07-26 19:37:18
1130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人