C语言必备知识

环境

Windows环境可使用Visual Studio 2019,Mac环境可使用fusion虚拟机配置。

基础知识

c语言注重调试能力,注重计算机原理的解析,每一个项目编译后是一个exe可执行程序。
数据类型的分类可分为基本数据类型、构造类型、指针类型*、空类型(void)四种。其中,基本数据类型分为整形 int,字符型 char,实型(浮点类型),构造类型分为数组类型 [ ],结构类型 struct,联合类型 union,枚举类型 enum。
在Visual Studio 2019中观察内存使用十六进制,为什么内存数据要使用十六进制去看?就是非常高效,两个字符就可以表示一个字节。
在程序员计算器中,DWORD代表4个字节
x86结构是小端存储(英特尔、AMD),低位在前,高位在后
1位—1bit 存储0或1,1字节—1byte=8bit,1kb=1024字节,1Mb=1024Kb,1Gb=1024Mb,地址就是4个字节。
磁盘 1G=1000 000 000字节
%d以十进制方式去输出某一个整数,%f以浮点形式输出对应数据。
3e-3=0.003,e代表10的次幂,注意e(或E)之前必须有数字,且e后面的指数必须为整数。
正确示例:1e3、1.8e-3、-123e-6、-.1e-3
错误示例:e3、2.1e3.5、e3、e
int 、float占用4个字节,一个字符变量占用一个字节大小的空间—%c
转义字符:\n(还行)、\b(退格)、\反斜杠
‘a’是字符型常量,"a"是字符串常量,二者是不同的,通常字符数组用来存储字符串。
字符串常量"CHINA"占用的内存单元不是5个字符,而是6个字符,即大小为6字节,最后一个为’\0’,然而在输出时不输出’\0’,因为’\0’无法显示。

混合类型运算

int i=5;
float j=i/2;//j输出的还是2
float k=(float) i/2;//k输出的是2.5
读取标准输入—scanf,缓冲区为空时,scanf才会阻塞,scanf在读取整形数,浮点数,字符串时,会忽略’\n’(回车符)、空格符等字符,混合输入时,每次在%c之前加上一个空格。
scanf发生错误时返回EOF,EOF就是-1,什么情况下scanf会出错?ctrl+z+回车。
stdin是标准输入,清空缓存区—rewind(stdin)
ret=scanf("%d%c%f",&i,&c,&f);ret代表成功读取了多少个数据
%s—读取字符串,对应后面写字符数组名、字符常量,%4.1f—总共在屏幕上占4位,小数点后一位,%3d—默认靠右占3个空格。
0假1真,非零值即为1
优先级 ! > && > ||
//判断两个浮点数是否相等,必须用下面的方法:
float f=234.56;
if(f-234.56>-0.0001&&f-234.56<0.0001){
printf(“f is equal to 234.56\n”);
}else{
printf(“f is not equal to 234.56\n”);
}

自增,自减运算符及字节运算符

i++;//i=i+1;
j=i++>-1;//j=i>-1;i++;
sizeof(i);关键字,运算符
算数运算符的优先级高于关系运算符、关系运算符的优先级于逻辑或运算符。
访问越界会造成数据访问异常,数组在传递时,元素个数传递不过去。
在子函数中,可以修改数组元素
初始化字符数组时,一定要让字符数组的大小比看到的字符串的长度加1。

结构体

gets();//遇到\n就结束
fgets(p,sizeof§,stdin);//p读到地址指向的空间,sizeof§读取多少个字节,stdin从标准输入里读数据。
typeof的作用就是起别名,为什么要对int起别名,为了代码即注释。
typedef的使用

typedef struct student{
int num;
char name[20];
char sex;
}stu,*pstu;
typedef int INTEGER;
int main(){
stu s={1001,"wangdao",'m'};
pstu p;//stu *p1,那么p1也是一个结构体指针
INTEGER i=10;
p=&s;
printf("i=%d,p->num=%d\n",i,p->num);
}

给结构体类型起别名,叫stu,起结构体指针类型的别名,叫pstu。
C++的引用:
把&写到形参位置是C++的语法,称为引用

void modifynum(int& b){
b=b+1;
}
int main(){
int a=10;
modifynum(a);
printf("a=%d",a);
return 0;
}

纯c形式:

void modifynum(int* b){
++(*b);
}
int main(){
int a=10;
modifynum(&a);
printf("a=%d",a);
return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值