C语言知识点笔记
文章目录
- C语言知识点笔记
- 前言
- 1.那些语句不用”;”结尾
- 2.uint32,uint16等整形数据类型属于stdint.h头文件
- 3.int *p1 , char * p2 之间的区别
- 4.相同类型指针相加减
- 5.如何将int *p 指定指定地址为0x1000 000并赋值1234 5678;
- 6.结构体的几种定义方式
- 7.static关键字的作用
- 8.extern如何使用
- 9.程序的数据分别在内存中的哪个位置
- 10.fd文件描述符 和 FILE流 操作文件的区别?(暂缺)
- 11.指针常量和常量指针区别
- 12.指针: *p , &p , p 之间的区别
- 13.const变量定义时必须初始化;
- 14.结构体对齐概念
- 15.空结构体大小(我的vs2015编译器不支持空结构体至少要一个成员所以不讨论)网上都说是1。Student a,b;
- 16.结构体名,结构体地址,结构体第一个成员的地址和值四者之间的关系
- 17.结构体位域的概念
- 18.prinf(“”,i++,i,i+1,i-1)的值,从左向右执行。
- 19.大小端的定义:小地址存小数据=小端否则为大端。检测方式可以用union或者使用指针的方式(char指向int)。
- 20.大小端存储方式由cpu决定,与编译器或系统无关。
前言
注:部分截图来自csdn和博客园上的大牛,如有雷同纯属懒,如需删除请联系。
每天一更,如有错误欢迎指正!!!
1.那些语句不用”;”结尾
(1)预处理
![在这里插入图片描述](https://img-blog.csdnimg.cn/28f22c6a36c6464fad0c2e7d8e26cdfe.png)
(2)函数名后面
![在这里插入图片描述](https://img-blog.csdnimg.cn/dfb892c02e3e4056bc15677ce622764a.png)
(3)花括号(最后 ‘}’ 后加上等于空语句)
![在这里插入图片描述](https://img-blog.csdnimg.cn/a65da46fa1d743818cacff5c5ac4b3e6.png)
2.uint32,uint16等整形数据类型属于stdint.h头文件
3.int *p1 , char * p2 之间的区别
(1)p1++; //每次地址自增加4
(2)p2++;//每次地址自增加1
(3)总:不同类型的指针之间自增每次+
4.相同类型指针相加减
![在这里插入图片描述](https://img-blog.csdnimg.cn/771fc60531714b5185dfad2a411d2665.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
5.如何将int *p 指定指定地址为0x1000 000并赋值1234 5678;
![在这里插入图片描述](https://img-blog.csdnimg.cn/d551a75f04164ad09b2f4c0fe9d67981.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
6.结构体的几种定义方式
![在这里插入图片描述](https://img-blog.csdnimg.cn/bf87a79622c24ee88cc01061fd386645.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
7.static关键字的作用
(1)对于全局变量,函数来说防止重复命名和限制本文件使用
(2)对于局部变量来说延长生命周期和全局变量一样长。
8.extern如何使用
最佳使用方法:a.c中定义,a.h中extern申明,b.c中引用a.h
![在这里插入图片描述](https://img-blog.csdnimg.cn/b80cba02ce584f03aa1a525d7fd2c5e8.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
9.程序的数据分别在内存中的哪个位置
![在这里插入图片描述](https://img-blog.csdnimg.cn/c245289160a14fa9b53ef9b85b75a9e7.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
10.fd文件描述符 和 FILE流 操作文件的区别?(暂缺)
11.指针常量和常量指针区别
![在这里插入图片描述](https://img-blog.csdnimg.cn/1edac651441c49f5a1be34d7f441656b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
12.指针: *p , &p , p 之间的区别
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee9055fdfdc4436b8042afce079936c2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
*p : 取出p保存的地址的值
P :p指针保存的地址
&p :p指针的地址
13.const变量定义时必须初始化;
14.结构体对齐概念
![在这里插入图片描述](https://img-blog.csdnimg.cn/f9a9ec1a10824687a057c4df612e0e2f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/cc2e85744af2499f9de4357b34735099.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
15.空结构体大小(我的vs2015编译器不支持空结构体至少要一个成员所以不讨论)网上都说是1。Student a,b;
![在这里插入图片描述](https://img-blog.csdnimg.cn/769c595595154d8d801e9406ae4c179b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/11f6d48628b44d4e80b1cb80d0626839.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
16.结构体名,结构体地址,结构体第一个成员的地址和值四者之间的关系
![在这里插入图片描述](https://img-blog.csdnimg.cn/7dd289cfbadd4d29a7523c373cc42a40.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
总:xiaoming(结构体名) = xiaoming.name (结构体第一个成员的值)
&xiaoming(结构体地址) = &xaioming.name(结构体第一个成员的地址)
17.结构体位域的概念
![在这里插入图片描述](https://img-blog.csdnimg.cn/1a707a2e89054f509e0779cb04ae7eff.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee3c8a09514e40f4b3d93f314f3ca0ca.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JCUV9oeGw=,size_16,color_FFFFFF,t_70)
总:
- 对齐方式和前面结构体对齐一样。位域数不可超过类型的bit数。
- 当以char方式对齐:前面的bit数<1B且和后面的bit数可构成一个字节时“后面”的bit在高位。
- 当以short类型对齐:前面的bit数>1B 时且和后面的bit数构成一个short,那么后面的bit在最后补齐。
18.prinf(“”,i++,i,i+1,i-1)的值,从左向右执行。
19.大小端的定义:小地址存小数据=小端否则为大端。检测方式可以用union或者使用指针的方式(char指向int)。
20.大小端存储方式由cpu决定,与编译器或系统无关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)