
C语言
文章平均质量分 78
C语言程序设计所需要具备的基本知识
_索伦
结束,还是开始?
展开
-
结构体练习
练习题输入年月日,计算这一天是这一年的第几天结构体定义求总共天数的函数实现判断是否为闰年输入示例主函数打印一个学生的成绩数组结构体定义输入函数输出函数输出示例主函数运行结果输入年月日,计算这一天是这一年的第几天结构体定义typedef struct Date{ int Year; int Month; int Day;}Date;求总共天数的函数实现int All_Days(Date* pdate){ assert(pdate != nullptr); int i = 0, su原创 2021-08-26 17:17:32 · 231 阅读 · 2 评论 -
堆和栈的区别
参考资料:《程序员面试宝典》堆和栈的区别内存堆和栈的区别1.申请方式2.申请后系统的响应3.申请大小的限制内存常用的内存区域有这几部分:代码区:存放函数体的二进制代码数据区:存放全局变量,静态变量等堆区:由人为申请和释放空间栈区:编译器申请和释放空间堆和栈的区别1.申请方式栈:由系统申请和释放示例:若要声明一个整型变量和字符型变量int a;char b;堆:程序员申请并指明大小,再C语言中常用malloc,calloc,realloc。示例:若要申请一个一维数组int原创 2021-10-03 12:58:17 · 123 阅读 · 1 评论 -
结构体和联合体的一些问题
查漏补缺一些结构体问题结构体在内存中的对齐规则示例为什么要理解字节对齐问题结构体和联合体的区别结构体在内存中的对齐规则结构体变量的首地址,必须是结构体变量中最大基本数据类型成员所占字节数的整数倍。结构体变量中的每个成员相对于结构体首地址的偏移量,都是该成员基本数据类型所占字节数的整数倍。结构体变量的总大小,为结构体变量中最大基本数据类型成员所占字节数的整数倍。不好理解,用例子来看示例示例1struct node{ char a; int b; double c;};int原创 2021-10-02 16:53:52 · 252 阅读 · 2 评论 -
C语言——string.h库中的memcpy()和memmove()
memcpy()和memmove()简介函数原型不能把一个数组赋值给另一个数组,可以通过循环来把数组中每个元素赋给另一个数组相应的元素。在string.h库中,strcpy()和strncpy()用于处理字符数组,而memcpy()和memmove()用来处理任意类型数组。函数原型void* memcpy(void* restrict s1, const void* restrict s2, size_t n);void* memmove(void* s1, const void* s2, si原创 2021-08-20 14:53:52 · 525 阅读 · 1 评论 -
C语言——C预处理器
简单介绍常用的C预处理器明示常量:#define在#define中使用参数用宏参数创建字符串:#运算符预处理器粘合剂:##运算符文件包含:#include使用头文件#undef条件编译#ifndefC预处理器在程序运行之前查看程序。根据程序中的预处理器指令,把符号缩写替换成其他内容。它的工作基本上是把一些文本转换成另一些文本。明示常量:#define#define最显而易见的功能就是宏替换。宏定义的组成:示例:常用#define可以这样替换数字、替换为另一个宏、声明数组大小、替换表达式以及原创 2021-08-20 14:02:09 · 362 阅读 · 1 评论 -
C语言——位操作
位操作二进制数、位和字节二进制整数有符号整数二进制浮点数介绍八进制和十六进制C按位运算符按位逻辑运算符二进制反码或按位取反:~按位与:&按位或:|按位异或:^用法:掩码用法:打开位(设置位)用法:关闭位(清空位)用法:切换位用法:检查位的值移位运算符左移:<<右移:>>在C语言中,是可以单独操控变量中的位的。因为C在提供高级语言便利的同时,还能在为汇编语言所保留的级别上工作。二进制数、位和字节在我们日常生活中通常使用的十进制。例如数字1234可以写成:1 *10e3原创 2021-08-10 23:31:44 · 9639 阅读 · 5 评论 -
C语言--联合,枚举类型
联合体和枚举类型简介联合体简介使用联合枚举类型enum常量C常量赋值联合体简介联合体是一种数据类型,它能在同一个内存空间中存储不同的数据类型。用法是,设计一种表示存储既无规律,事先也不知道顺序的混合类型。创建联合体和结构体的方式相同:union digit{ int num; double score; char letter;};使用联合体声明变量的时候,编译器会分配联合声明中占用最大字节的类型。union digit money; //digit类型的联合变量,八字节但需要原创 2021-08-08 18:21:12 · 287 阅读 · 2 评论 -
C语言--自定义类型——结构体
结构体建立结构体声明定义结构变量初始化结构访问结构体成员结构的初始化器结构数组指向结构的指针用指针访问成员向函数传递结构的信息传递结构成员传递结构的地址传递结构结构和结构指针的选择建立结构体声明结构声明描述了一个结构的组织布局。类似这样:struct Student{ char id[8]; char name[8]; char sex[4]; int age;};用一对花括号括起来的是结构成员列表,成员可以是任意一种C的数据类型,甚至可以是其他结构。右花括号后面的声明必不可少该声原创 2021-08-07 19:08:42 · 424 阅读 · 0 评论 -
C语言--分配内存简介
简介malloc()和free()malloc()简介free()的重要性calloc()函数malloc()简介C语言声明变量等都是在内存上开辟空间的,内存包括四个区域:代码区,数据区,堆区和栈区。一般的声明都是在栈帧中开辟空间的,在windows系统中,栈区一般是1M大小,而C语言可以在程序运行时分配更多的空间,主要工具是malloc(),此函数会在堆区中申请空间。在头文件stdlib.h中。该函数接受一个参数:所需内存的字节数,它返回动态分配内存块的首地址。这个指针指向void,相当于泛型指针原创 2021-08-06 18:31:39 · 234 阅读 · 0 评论 -
C语言--存储类别和链接
存储类别和链接存储类别作用域链接static存储期存储类别C语言提供了多种不同的模型或存储类别在内存中存储数据。作用域作用域描述程序中可访问标识符的区域。先做简单介绍:一个C变量的作用域可以是:块作用域函数作用域函数原型作用域文件作用域块是用一对儿花括号括起来的代码区域。整个函数体是一个块,函数中的任意符合语句也是一个块。例如:int Add_Sum(int num){ int sum = 0; for (int i = num; i >0; --i) //i是for原创 2021-08-06 17:52:47 · 1554 阅读 · 0 评论 -
C语言--字符串和字符串函数(三)
这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-05 14:54:59 · 154 阅读 · 0 评论 -
C语言--字符串和字符串函数(二)
字符串和字符串函数(二)字符串函数strlen()函数三级目录字符串函数C库提供了很多处理字符串的函数,这些函数原型在string.h头文件中。strlen()函数strlen()函数用于统计字符串的长度。示例:#include<stdio.h>#include<string.h>int main(void){ char str[] = "This is a string."; printf("str has %d characters.\n", strlen原创 2021-08-04 18:30:42 · 313 阅读 · 2 评论 -
C语言--字符串和字符串函数(一)
字符串和字符串函数表示字符串和字符串I/O在程序中定义字符串字符串字面量(字符串常量)表示字符串和字符串I/O字符串是以空字符(\0)结尾的char类型数组。C提供了许多用于处理字符串的函数。表示字符串的几种方式:#include<stdio.h>#define STR "I am a symbolic string constant."#define SIZE 50int main(void){ char words[SIZE] = "I am a string in an原创 2021-08-03 17:57:29 · 761 阅读 · 0 评论 -
C语言--数组和指针
数组和指针数组二级目录三级目录数组数组由数据类型相同的一系列元素组成二级目录三级目录原创 2021-07-27 12:22:42 · 405 阅读 · 3 评论 -
C语言--函数--指针简介
接着上一篇文章的函数,这里引入指针指针简介查找地址:&运算符间接运算符:*声明指针使用指针在函数间通信指针简介什么是指针?从根本上看,指针(pointer)是一个值为内存地址的变量(或数据对象)。如char类型变量的值是字符,int类型变量的值是整数,指针变量的值是地址。这里简介一下指针作为函数参数的使用。查找地址:&运算符指针用于存储变量的地址。scanf()函数中就是用地址作为参数,通过地址修改主调函数中的值。一元运算符&给出变量的存储地址。如果num是变量名,&am原创 2021-07-25 19:58:21 · 117 阅读 · 0 评论 -
C语言--函数
函数创建函数简单的函数定义带形式参数的函数调用带实际参数的函数使用return 从函数中返回值return语句函数原型的优点递归演示函数是完成特定任务的独立程序代码单元。使用函数可以省去编写重复代码。函数让程序更加模块化,从而提高代码的可读性。创建函数简单的函数示例:#include<stdio.h>void Print_Star(void); //函数原型int main(void){ Print_Star(); //函数调用 Print_Star(); retur原创 2021-07-25 19:29:50 · 258 阅读 · 0 评论 -
C控制语句:分支和跳转2
主要介绍switch语句循环辅助:continue和breakcontinue语句break语句多重选择:switch和break循环辅助:continue和break这两个语句可以根据循环体中的测试结果来忽略一部分循环内容,甚至结束循环。continue语句三种循环都可使用continue语句。执行到该语句时,会跳过本次迭代的剩余部分,并开始下一轮迭代。如果continue语句在嵌套循环内,则只会影响包含该语句的内层循环。用法示例:while ((ch = getchar()) != '\n'原创 2021-07-16 19:26:15 · 189 阅读 · 0 评论 -
逻辑运算符
逻辑运算符三种逻辑运算符逻辑运算符含义&&与||或!非假设exp1和exp2是两个简单的关系表达式,则当且仅当exp1和exp2都为真时,exp1 && exp2才为真。如果exp1或exp2为真,则exp1 || exp2为真。如果exp1为假,则 !exp1为真;如果exp1为真,则!exp1为假。(练习 && 时间) == 完美备选拼写:iso646.h头文件传统写法iso646原创 2021-07-16 18:11:34 · 268 阅读 · 0 评论 -
C控制语句:分支和跳转1
分支和跳转if语句二级目录三级目录if语句被称为分支语句或选择语句通用形式if (expression)statement结构和while语句相似,他们的主要区别是:日过满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。二级目录三级目录...原创 2021-07-16 17:43:24 · 113 阅读 · 0 评论 -
C控制语句:循环
循环入口条件循环while语句for语句利用for的灵活性出口条件循环do while嵌套循环主要介绍while循环和其他两种循环:for和do while。入口条件循环即在执行循环体之前就决定了是否执行循环,因此,for循环和while循环可能一次都不执行。while语句通用形式while (expression)statementstatement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。expression可以用任何表达式,如果为真,执行statement部分原创 2021-07-15 15:33:59 · 128 阅读 · 0 评论 -
C语言 类型转换
类型转换问题类型转换强制类型转换运算符类型转换一般来说,在语句和表达式中应使用类型相同的变量和常量。但是如果使用混合类型,C会采用一套规则进行自动类型转换。char 和short 会被转化成int。这种转换被称为升级。涉及两种类型的运算,两个值会分别转换成两种类型的更高级别。在赋值表达式语句中,计算的最终结果会被转换成被赋值变量的类型。当作为函数参数传递时,char 和short被转换成int,float被转换成double。目标类型是无符号整型,且待赋的值是整数时,额外的位将会被忽略。例如原创 2021-07-11 21:41:35 · 196 阅读 · 1 评论 -
运算符简介
运算符运算符基本运算符赋值运算符:=几个术语:数据对象,左值,右值和运算符加法运算符:+减法运算符:-符号运算符:-和+乘法运算符:*除法运算符:/运算符优先级其他运算符sizeof运算符和size_t类型求模运算符递增运算符:++递减运算符: --优先级小结运算符C语言为处理数据提供了大量的操作,可以在程序中进行算术运算,比较值的大小,修改变量,逻辑的组合关系等。基本运算符基本运算的运算符有:=, +, -, *, /(C没有指数运算符。不过C的标准库中提供了一个pow()函数用于指数运算。例如:原创 2021-07-11 20:04:13 · 385 阅读 · 0 评论 -
字符串和格式化输入\输出
字符串和格式化输入\输出字符串和格式化输入\输出字符串简介char 类型数组和null字符常量和C预处理器明示常量printf()和scanf()printf()函数使用scanf()小结字符串和格式化输入\输出主要介绍两个输入\输出函数:printf()和scanf()。简要介绍一个重要工具------C预处理器指令。字符串简介字符串是一个或多个字符的序列。如:“This is a string.”双引号不是字符串的一部分。双引号仅告知编译器他括起来的是字符串。char 类型数组和null原创 2021-07-04 20:29:30 · 345 阅读 · 0 评论 -
数据和C。
数据和Cc语言的数据类型关键字c语言的数据类型关键字最初 c90添加 c99添加char signed -Boolint void -Complexshort -Imaginarylongunsignedfloatdoubleint类型有符号整型,值是整数,正整数,负整数或0.int最小取值范围为-32768–32767声明int变量:int erns; int cows;声明创建了变量原创 2021-06-14 19:18:56 · 250 阅读 · 0 评论