IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言复习tips(三) -> 正文阅读

[C++知识库]C语言复习tips(三)

C语言复习tips(三)

以下知识点是我在学习C语言课程的过程中零零散散地记录下来的,分三次呈现出来,认为有用的小伙伴可以先收藏哦??有问题请在评论区指出。蟹蟹~~😄😄

43)宏定义分为普通宏定义和带参数的宏定义

??????//普通宏

??????#define Pi (3.1415926)

??????//带参数的宏 (宏函数)

??????#define max(a,b) ((a)>(b)? (a),(b))

??????注意变量在宏中要用括号括起来,因为,在C语言中define宏定义在编译时,会被展开,进行“傻瓜式”替换,也称为“字面”替换,如果没有括号有可能会产生歧义。如:

??????int a,b,c,d,e;

??????a=1;b=2;c=3,d=4;

??????e=f(a+b)* f(c+d) ; //理论值e=9*100=9001.

??????1>#define f(x)(x*x)

??????替换结果为:e=(a+ba+b)(c+dc+d) = 519=95

??????2> #define f(x) x*x

??????替换结果为:e=a+ba+bc+d*c+d=1+2+6+12+4=43

??????3>#define f(x) ( (x)*(x) )

??????替换结果为:e=( (a+b)(a+b)(c+d)(c+d) )=3377=441

44)一般情况下是对结构体变量中的各个成员进行赋值或存取以及运算,但如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员,再进行操作。

45)结构体类型中的成员名可以与程序中的变量名相同并且二者并不代表同一对象。但是用结构体定义的变量名不可以与程序中的变量名相同。

46)数组元素可以作函数实参,不能作形参。因为C语言编译器并不检查形参数组的大小,只是将实参数组首元素的地址传给形参数组名。

47)在函数调用时,数组名或指针变量作函数参数的调用称为传地址调用;普通变量作函数参数的调用称为传值调用。

48)通过指针引用二维数组,就涉及到行指针int(p)[N]与列指针intp,应注意列指针是不允许像行指针那样以二维形式表示的。列指针指向二维数组的元素是需要算相对位移量的。

49)定义指向函数的指针变量p,将函数入口地址赋给p后,在函数指针变量调用函数时,只须将(*p)代替函数名,再在(*p)之后的括号中根据需要写上实参即可。

50)指针变量是用来存放地址的,一个任何类型的指针变量所占的字节大小一般为4个字节。

51)void *指针是一种特殊的指针,不指向任何类型的数据,如果需要用此地址指向某类型的数据,应先对地址进行类型转换。可以在程序中进行显式的类型转换,也可由编译系统自动进行隐式转换。无论用那种转换,首先必须了解要进行类型转换。

52)如果p指向一个结构体变量stu,以下3种访问成员的用法等价:

??????1> stu. 成员名(如stu.num);

??????2> (*p).成员名(如(*p).num);

??????3> p->成员名(如p->nun);

53)C语言的编译器以压栈式存储的,所以输出时是从栈顶往栈底读取数据的,但我们看到在用printf输出时,是从右往左进行的。(有的编译器有些例外)

54)在绝大多数表达式中,数组名的值是指向数组第一个元素的指针。这个规则只有两个例外。sizeof返回整个数组所用的字节而不是一个指针所占用的字节;单目操作符&返回一个数组的指针而不是一个指向数组第一个元素的指针的指针。

55)字符串的列表可以以矩阵的形式存储,也可以以指向字符串常量的指针数组形式存储。在矩阵中,每行必须与最长字符串的长度一样长,但它不需要任何指针。指针数组本身要占用空间,但是每个指针所指向的字符串所占用的内存空间就是字符串本身的长度。

56)malloc和calloc之间的主要区别是后者在返回指向内存的指针之前把它初始化为0。另一个较小的区别是它们请求内存数量的方式不同。

57)realloc用于修改一个已经分配的内存块的大小,即将一块扩大或缩小。缩小时尾部内存被丢弃;扩大时原先内容依然保留。如果原先的内存块无法扩大,realloc函数将分配另一块正确大小的内存,并将原先那块内存的内容复制到新的块上 。因此,在使用realloc之后,你就不能再使用指向旧内存的指针,而应改用realloc所返回的新指针。

58)realloc之后,你就不能再使用指向旧内存的指针,而应改用realloc所返回的新指针。

59)在这里插入图片描述请添加图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:37:50  更:2021-08-02 10:38:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 0:33:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码