C语言基础
Dorby .
我只想要一个我想要的生活
展开
-
int8_t、int16_t、int32_t、int64_t、size_t和ssize_t的区别
公众号:CppCodingint_tint_t是一个大类,不同的机器有不同的字长,所以采用typedef的形式,便于后期维护。int8_t : typedef signed char;uint8_t : typedef unsigned char;int16_t : typedef signed short ;uint16_t : typedef unsign...原创 2020-01-14 18:24:50 · 1426 阅读 · 0 评论 -
C语言:类型重命名typedef
给一个已有的数据类型声明一个新名字。新名字是数据类型的别名。用法typedef 类型 新名字;typedef unsigned char Byte;Byte b = 0x11; typedef char* Str;Str str = "ABCDEFG";我们使用结构体类型时,需要使用struct关键字。typedef可以省略这个关键字。typedef struct { ...原创 2019-04-08 22:36:32 · 1205 阅读 · 0 评论 -
C语言位操作和内存
位操作1.位运算No.操作符功能1&按位与2按位或3~按位取反4^按位异或注:按位或的操作符是 |2.运算规则逻辑运算与按位运算1.逻辑运算结果只有0和1两种值,按位运算有多种值。2.逻辑运算相当于把所有的非零值都变成1,再按位运算。移位运算No.操作符功能1<<左.原创 2019-04-20 22:52:18 · 531 阅读 · 0 评论 -
C语言:文件操作
文件输入输出使用printf()和命令行重定向>实现文件输出;使用scanf()和命令行重定向<实现文件输入。hello.cchar name[256];scanf("%s",name);printf("Hello %s\n",name);编译gcc Hello.c -o Hello执行Hello > Hi.txtHello < Hi.txt...原创 2019-04-24 21:59:14 · 492 阅读 · 1 评论 -
C语言:结构体
1.结构体的操作1.1取地址struct Point3D{ int x; int y; int z; };struct Point3D p = {1,2,3};printf("&p = %p\n",&p);printf("&(p.x) = %p\n",&p.x);printf("&(p.y) = %p\n",&...原创 2019-04-24 22:00:46 · 110 阅读 · 0 评论 -
typedef用法详解
第一:四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa,pb;//不符合定义两个指针的意图,只是声明一个指向字符变量的指针和一个字符变量但是以下则可行:typedef char* PCHAR;PCHAR pa,pb;//同时声明两个指向字符变量的指针用途二:简写代码形式用途三:为复杂的声明定义一个新的简单的别名。方...原创 2019-08-16 13:14:17 · 169 阅读 · 0 评论 -
内存管理总结
内存管理基础作用域C语言变量的作用域分为:- 代码块作用域{代码块是{}之间的一段代码}- 函数作用域- 文件作用域局部变量局部变量也叫auto自动变量,一般情况下代码块{}内部定义的变量都是自动变量,其特点:- 在一个函数内定义,只在函数范围内有效- 在复合语句中定义,只在复合语句中有效- 随着函数调用的结束或复合语句的结束局部变量的声明声明周期结束- 如果没有赋初值,内容...原创 2019-09-01 21:42:42 · 88 阅读 · 0 评论 -
C语言实现简单的内存管理机制
https://blog.csdn.net/a29562268/article/details/79574121原创 2019-09-01 21:44:32 · 344 阅读 · 0 评论 -
一个程序从源代码到可执行程序的过程
一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。其中,编译是主要部分,其中又分为六个部分:语法分析,词法分析,语义分析,中间代码生成,目标代码生成和优化。链接中,分为静态链接和动态链接。一、预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则如下1.删除所有的#define,展开所有的宏定义。2.处理所有的条件预编译指令,如“#if”、“#endif”、“#ifd...原创 2019-09-01 22:40:44 · 607 阅读 · 0 评论 -
C语言:枚举类型
const与define的区别比较项defineconst编译处理预处理阶段编译、运行阶段工作原理简单的字符串替换有对应的数据类型存储方式展开,在内存中有若干个备份只读变量在内存中只有一份类型检查没有类型安全检查在编译阶段进行类型检查作用域从定义开始,任何位置都可访问只能在变量作用域内枚举语法enum 枚举类型名{名字0...原创 2019-04-08 21:46:45 · 161 阅读 · 0 评论 -
C语言:联合体
1.语法union 联合体类型名 { 成员};用法与struct一样。不同点是所有成员公用相同的内存空间。联合体的sizeof是成员中大小最大的值。联合体是成员共用内存空间。union Test{ int n; double b;};printf("%ld\n",sizeof(union Test));按从低到高的顺序打印出int类型每个字节的对应...原创 2019-04-08 20:12:56 · 424 阅读 · 2 评论 -
四舍六入五留双与四舍五入之间的差别
%.mf 可以让浮点数保留 m 位小数输出保留的是精读为 四舍六入五成双就是5以下舍弃5以上进位 而当下一位为5时要讨论:被化简的小数位后面一位的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。如:9.8249=9.82(小于5,舍掉), 9.82671=9.83...原创 2019-04-08 19:19:40 · 3038 阅读 · 0 评论 -
C语言入门:控制语句
1.条件判断语句1.1 if 语句if(条件){ 语句(/*条件为真时所要执行的语句*/)}1.2 if-else语句语法if(条件){ 语句(/*条件为真时所要执行的语句*/)}else{ 语句(/*条件为假时所要执行的语句*/) }说明{ }之间是代码块,是要执行操作的代码1.3 if-else if-else语法if(条件1){ 语句(//当...原创 2019-03-18 14:00:24 · 284 阅读 · 0 评论 -
C语言入门:第二课
基本数据类型、运算符和变量1.基本数据类型在Hello World示例使用了字符串,在C语言中还有一类常用的数据类型–数值类型。例如:字符c、整数123和小数3.14。下面是在终端输出整数和小数。#include&amp;lt;stdio.h&amp;gt;main(){ printf(&quot;%c&quot;,'c'); printf(&quot;%d&quot;,123原创 2019-03-17 21:07:55 · 161 阅读 · 0 评论 -
C语言入门:函数
函数函数说明函数除了头文件中包含已有的之外(sqrt(参数),pow(参数),fabs(参数)),还可以自己定义函数语法返回类型 函数名 (参数列表){ 表达式1; 表达式2; ...}定义函数的结构1.函数头: 返回类型,函数名,参数列表2.函数体函数类型1.根据有无参数,可将函数分为有参函数和无参函数2.根据函数返回类型,可将函数分为无返回值函数和返回值...原创 2019-03-18 22:19:18 · 226 阅读 · 0 评论 -
C语言入门:指针
1.指针是什么?指针是一种保存变量地址的变量。在计算机中每个存储单元(一个字节)都有一个编号,这个编号称为变量地址。普通变量的值就是实际值,指针变量的值是变量的地址取地址 &#include<stdio.h>main(){ int a=0; printf("%p\n",&a);}说明1.&: 在变量前面加&,可以表示获取...原创 2019-03-19 13:14:44 · 286 阅读 · 0 评论 -
基本数据类型
各数据类型在各操作系统下的字节数数据类型占位符No.类型占位符1char%c2short%hd3int%d4long%ld5long long%lld6float%f7double%lf8long double%Lf数据类型的范围类型数据范围表示char-128~1...原创 2019-03-31 21:18:29 · 158 阅读 · 0 评论 -
指针进阶
表示形式含义地址a二维数组名,指向一维数组a[0],即0行首地址2000a[0],*(a+0),*a0行0列元素地址2000a+1,&a[1]1行首地址2016a[1],*(a+1)1行0列元素a[1][0]的地址2016a[1]+2,*(a+1)+2,a[1][2]1行2列元素a[1][2]2024(a[1]+2),...原创 2019-03-31 22:36:21 · 80 阅读 · 0 评论 -
C语言入门:数组
数组未初始化,数组里面的值都是随机值。数组初始化为{0},数组里面的值都是0。数组初始化为{非零值},数组里面第一个值是非零值,其他的值都是0。数组部分初始化int arr[12] = {[2]=2,[5]=5};for(int i=0;i<12;++i){ printf("%d ",arr[i]);}指定下标的值被赋值,其他的值都是0。这是C99语法。数组的大...原创 2019-04-01 16:24:33 · 232 阅读 · 0 评论 -
strlen和sizeof的区别
sizeofsizeof(…)是运算符,它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);类型——该类型所占的空间大小;对象——对象的实际占用空间大小;函数——函数的返回类型所占的空间大小。函数的返...原创 2019-04-01 16:27:35 · 143 阅读 · 0 评论 -
C语言:进制
基数与权基数是计数值制所用到的数字符号的个数,在基数为R的计数制中包含0 1 2…R-1,共R个数字符号。进位规律是逢R进一,称为R进制位权是指在一种进位计数制表示的数中,用来表示不同数位上数值的大小的一个固定常数,不同的数位有不同的位权,某一个数位的数值等于这一位的数字符号乘上该数的位权。例如:123 = 1 * 102 + 2 * 101+ 3 * 100二进制:0,1;八进制:0,1,...原创 2019-04-01 21:56:30 · 248 阅读 · 0 评论 -
C语言第一课
Hello WorldC语言hello world 经典开篇1.编写代码开始的第一个程序是一个最简单的程序,也就是最经典的Hello World程序,它的功能为打印出Hello World。程序的内容非常简单,也是C语言编写程序的基本结构框架。机构的电脑是基于虚拟机的,其编程是gcc的。1.建立hello.c文件;vim hello.c2.编写hello world的代码;#in...原创 2019-03-16 19:12:58 · 520 阅读 · 0 评论