学习c语言的一点点收获,普通人不知道的秘密(哈哈哈哈)

有错误欢迎大家提醒我

文章目录


前言

马上要毕业了,回过头来发现自己虚度了三年的光阴。以此篇文章献给大学刚开始学c语言的小伙伴。


一、c语言你不知道的秘密,文章稍长,看完绝对有收获。

#define  宏定义,在c语言中书写的格式

#define  zhengxing int

意思是会在编译阶段把所有遇到的“zhengxing”这个字符串都当作int来看待

 #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。所以使用函数的时候要引入对应的头文件。想知道c语言有哪些官方规定好的头文件可以去百度,每个头文件里的函数有哪些,也可以自行百度。我就不过多的阐述了。

定义常量

在 C 中,定义常量的方式:使用 #define 预处理器与使用 const 关键字。

使用conts时只需要在变量类型前面加上就行 conts int a=0;

许多的人写C 程序,写main里面的东西都不知道是干什么的。

main(int argc, char *argv[]) 

传入参数,与其他函数的"()"里面放的东西相同。argc 为参数个数,argv 是字符串数组, 下标从 0 开始,第一个存放的是可执行程序的文件名字,然后依次存放传入的参数,

main()或者main(void)也是可以的。这两个等价,作用是说main函数不传入任何参数。

在定义变量名或者函数名的时候必须以字母或下划线开头。

引入头文件时<>可以理解成系统自带的库,也可以写成" " 表示用户自定义的库。.h表示头文件.程序在编译时,需要找到那个头文件,使用<>这种方式编译器查找的时候,会在编译器的安装目录的标准库中开始查找,""这种方式,会在当前的工程所在的文件夹开始寻找,也就是你的源程序所在的文件夹。

c语言现在的标准是C11,上一个标准是C99.版本.具体的变动可以自行百度.

char1 字节-128 到 127 或 0 到 255
unsigned char1 字节0 到 255
signed char1 字节-128 到 127
int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int2 或 4 字节0 到 65,535 或 0 到 4,294,967,295
short2 字节-32,768 到 32,767
unsigned short2 字节0 到 65,535
long4 字节-2,147,483,648 到 2,147,483,647
unsigned long4 字节0 到 4,294,967,295

这个表上的东西是最基本的,一定要知道,不能做到全部了解也要明白char 与int.

1位二进制    1位=1bit

8位二进制  8位=1byte(字节)

字节是数据大小的最小衡量单位。

一个汉字,占两个字节.也就是16位,有的地方也把位叫做字长.

各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。

char类型一个字节有8位,8位的最大数值是255,0-255可以表示256个字符。256个字符就是ascii码。ascii码的256个就在这里对应上了。

float类型,占四个字节三十二位,0-22位表示小数,23-30位表示指数(10的几次方),31位表示指数的正负。具体的当时我记得实在计算机组成原理上面,如果想要深入学习的可以自行百度。

doubule类型,占8个字节,64位。0-52位表示具体的数,52到62表示指数,63表示指数的符号位。

得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符。表达式 sizeof(type) 

printf("int 存储大小 : %lu \n", sizeof(int));

说点不常用但是需要知道的关键字

关键字说明
case开关语句分支
const定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变。只能读,不能更改
enum声明枚举类型
extern声明变量或函数是在其它文件或本文件的其他位置定义
goto无条件跳转语句
register声明寄存器变量
signed声明有符号类型变量或函数
sizeof计算数据类型或变量长度(即所占字节数)
struct声明结构体类型
typedef用以给数据类型取别名
unsigned声明无符号类型变量或函数
union声明共用体类型
void除常用的功能外,还可以声明无类型指针
volatile说明变量在程序执行中可被隐含地改变
while循环语句的循环条件

指针指向 void
类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。

常见的转义字符

转义序列含义
\\\ 字符
\'' 字符
\"" 字符
\?? 字符
\n换行符
\r回车

然后还需要知道常见的定义类型,auto(默认的),static(静态的),extern(全局),register(寄存器)。

extern定义一个extern类型的变量,这个变量在这个项目里哪里都可以用。哪里都可以。

register比较特殊register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。

RAm就是内存,在内存卡与cpu之间。

位运算符 

&(和),|(或),^(异或),~(取反),>>(右移),<<(左移)。

&与|与逻辑运算方式相同。

"^"    异或就是两个数的二进制位对齐,相同取0,不同取1

"~"  取反就是每一位二进制由原来的0变成1,1变成0

">>" 右移就是将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

"<<"左移,左边多余的丢掉,右边补0。

int a=1;
a=a<<1;

现在a就完成了左移,现在变量a的值位2

其他符号

sizeof()是运算符,不是函数,

&返回变量的地址。
int a=10;
printf("%d",&a);
结果是a这个变量在内存里的具体的位置
*指向一个变量。*a; 将指向一个变量。


总结


例如:以上就是今天要讲的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒野大票客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值