0419学习总结(数组,函数,预处理)
来源:互联网 发布:c linux ide工具 编辑:程序博客网 时间:2024/05/22 20:53
1.函数:
(1)定义:函数的关键,函数的实现部分
(2)声明:函数原型声明,函数的返回值,函数的列表,函数的名字等
(1)实参:调用函数时,传进去的参数
(1)过程
(1)数值要保持函数定义的时候前面的数据类型一样,返回到函数调用的地方
(1)保持现场
(1)合法
(2)合理
(1)linux内核:int_to_string
总结:有时候需要定义很多变量,如果用一般的定义方式显得麻烦,并且容易出错,所以就引用数组的这个概念;
定义数组和定义一般变量的比较:
(1)通过下标,int num[4];
(2)num[0]:使用数组中第一个元素;
(1)完全初始化:int a[4] = {1,2,3,4};
(2)不完全初始化:int a[3] = {33};
例子:int a[3] = {};//a[0] = 0,a[1] = 0,a[2] = 0;
int a[3] = {0};//跟上面是等价的;
// int a[3];//没有初始化的;随机值!
第一种:
int a; //定义;
a = 1; //赋值;
注意:写代码不是越快越好,质量越高越好!!!!
第二种:
int a = 1; //初始化===》定义的同时赋值;
gcc里面特有的:int a[3] = {[1] = 4};
20.二维数组;
int a[N][M]; //N,M 是常量!
int a[3][4]; //二维数组由3个一维 数组组成,然后每个一维数组里面包含了4个元素;
a[0][0] a[0][1] a[0][2]a[0][3]
a[1][0] a[1][1] a[1][2]a[1][3]
a[2][0] a[2][1] a[2][2]a[2][3]
二维数组在内存中的存储方式:按行存放,先放第一行,再放第二行。。。。。依次类推!
初始化:int a[3][4] = {{},{},{}};
int a[3][4] = {1,2,3,4,5,6,7.....12};
gcc里面特有的初始化方式:a[1][2] = 5;
a[3][4] = {[1][2] = 5};//可以的;
21.字符数组:
char ch[4] = {'a','b'..};
char ch[] = {"HelloWorld"};
char ch[11] = {"HelloWorld"};
字符串的结尾标志是'\0';
遍历字符串的时候,遍历是'\0'默认为字符串结束了,然后'\0'前面的字符就是字符串的内容;
输入字符串的时候:hello 系统会自动在o后面加上一个'\0'表示字符串结束;
‘\0’占存储空间的;
sizeof(ch); //11,加'\0',毕竟'\0'占存储空间的;
strlen(ch); //10,因为'\0'表示字符串结束,字符串的真正内容是'\0'前面的字符,当然不算'\0';
‘\0’是个什么玩意呢? ASCII表---'\0'==>0 什么都不显示!
int a[5] = {1,2,3,4,5};
sizeof(a); ///定义了整型数组,然后数组元素是5个,每一个整型数所占字节是4个字节,那么5个呢:4*5 = 20;
sizeof(a)/sizeof(a[0]);//实现什么功能?数组个数!
数组里面的数据类型都是一样的啊,不是说可以2个int和3个float!!!!
数组的基本应用:
1、冒泡排序:
2、选择排序:
22.编译预处理:
(1)宏定义:
不带参数: #define MAX 100
带参数的宏定义: #define S(a) a*a //宏函数;
“”里的内容不替换;
带参的宏定义最好加上();
举个例子:S(a) a*a S和(之间没有空格
带参的宏定义称为宏函数:
笔试题和面试题:
宏函数和自定义函数的区别:
1、宏函数在预处理阶段进行替换,自定义函数是在编译期间进行处理;
2、宏函数没有类型,自定义函数有类型;
3、因为宏函数只是进行简单的替换,自定义函数调用的时候还得分配栈空间、保存现场,所以宏函数执行效率比自定义函数高;
4、也是因为只是进行简单的替换,所以不进行语法检查,自定义函数进行语法检查;
既然宏函数执行效率高,而自定义函数进行语法检查,各有优点;
内联函数:inline
内置宏:
两个下划线连起来的!
typedef:不是在预编译处理阶段处理的;
23.条件编译:
#if 宏名
...
#elif
....
#endif
为什么需要使用函数?--类比于生活中的写文章
main函数:从main开始执行,在main中结束
(1)定义:函数的关键,函数的实现部分
(2)声明:函数原型声明,函数的返回值,函数的列表,函数的名字等
(3)调用:调用函数
(1)实参:调用函数时,传进去的参数
(2)形参:函数定义的参数
5.传参:传参并不是通过参数的名字进行传递
6.函数的形参个数没有限制,但不能太多
7.传参的过程就是函数调用的过程,形参不能传递給实参,单向传输
8.传值调用,指针可以‘传址调用’,本质上都是传值调用
9.函数的嵌套调用:比如在fun1中调用fun2
10.函数的递归调用:函数调用自身,如求!n
(1)过程
(2)结果
(1)数值要保持函数定义的时候前面的数据类型一样,返回到函数调用的地方
(2)注意:不返回局部变量的值
(1)保持现场
(2)分配栈空间,函数执行后,释放栈空间
(1)合法
(2)合理
(3)注意:不要太长,不要太复杂
(1)linux内核:int_to_string
(2)驼峰式:IntToString
总结:有时候需要定义很多变量,如果用一般的定义方式显得麻烦,并且容易出错,所以就引用数组的这个概念;
定义数组和定义一般变量的比较:
没有谁好谁坏,只有适合与不适合;======》什么时候用数组定义?什么时候用一般变量定义?
例子:int nun[4];//数据类型 数组名[常量]; 常量:5 3+2;
(1)通过下标,int num[4];
(2)num[0]:使用数组中第一个元素;
(3)num[1]:使用数组中第二个元素;
(1)完全初始化:int a[4] = {1,2,3,4};
(2)不完全初始化:int a[3] = {33};
例子:int a[3] = {};//a[0] = 0,a[1] = 0,a[2] = 0;
int a[3] = {0};//跟上面是等价的;
// int a[3];//没有初始化的;随机值!
第一种:
int a; //定义;
a = 1; //赋值;
注意:写代码不是越快越好,质量越高越好!!!!
第二种:
int a = 1; //初始化===》定义的同时赋值;
gcc里面特有的:int a[3] = {[1] = 4};
20.二维数组;
int a[N][M]; //N,M 是常量!
int a[3][4]; //二维数组由3个一维 数组组成,然后每个一维数组里面包含了4个元素;
a[0][0] a[0][1] a[0][2]a[0][3]
a[1][0] a[1][1] a[1][2]a[1][3]
a[2][0] a[2][1] a[2][2]a[2][3]
二维数组在内存中的存储方式:按行存放,先放第一行,再放第二行。。。。。依次类推!
初始化:int a[3][4] = {{},{},{}};
int a[3][4] = {1,2,3,4,5,6,7.....12};
gcc里面特有的初始化方式:a[1][2] = 5;
a[3][4] = {[1][2] = 5};//可以的;
21.字符数组:
char ch[4] = {'a','b'..};
char ch[] = {"HelloWorld"};
char ch[11] = {"HelloWorld"};
字符串的结尾标志是'\0';
遍历字符串的时候,遍历是'\0'默认为字符串结束了,然后'\0'前面的字符就是字符串的内容;
输入字符串的时候:hello 系统会自动在o后面加上一个'\0'表示字符串结束;
‘\0’占存储空间的;
sizeof(ch); //11,加'\0',毕竟'\0'占存储空间的;
strlen(ch); //10,因为'\0'表示字符串结束,字符串的真正内容是'\0'前面的字符,当然不算'\0';
‘\0’是个什么玩意呢? ASCII表---'\0'==>0 什么都不显示!
int a[5] = {1,2,3,4,5};
sizeof(a); ///定义了整型数组,然后数组元素是5个,每一个整型数所占字节是4个字节,那么5个呢:4*5 = 20;
sizeof(a)/sizeof(a[0]);//实现什么功能?数组个数!
数组里面的数据类型都是一样的啊,不是说可以2个int和3个float!!!!
数组的基本应用:
1、冒泡排序:
2、选择排序:
22.编译预处理:
(1)宏定义:
不带参数: #define MAX 100
带参数的宏定义: #define S(a) a*a //宏函数;
“”里的内容不替换;
带参的宏定义最好加上();
举个例子:S(a) a*a S和(之间没有空格
带参的宏定义称为宏函数:
笔试题和面试题:
宏函数和自定义函数的区别:
1、宏函数在预处理阶段进行替换,自定义函数是在编译期间进行处理;
2、宏函数没有类型,自定义函数有类型;
3、因为宏函数只是进行简单的替换,自定义函数调用的时候还得分配栈空间、保存现场,所以宏函数执行效率比自定义函数高;
4、也是因为只是进行简单的替换,所以不进行语法检查,自定义函数进行语法检查;
既然宏函数执行效率高,而自定义函数进行语法检查,各有优点;
内联函数:inline
内置宏:
两个下划线连起来的!
typedef:不是在预编译处理阶段处理的;
23.条件编译:
#if 宏名
...
#elif
....
#endif
0 0
- 0419学习总结(数组,函数,预处理)
- c/c++预处理学习总结
- mysql预处理学习和总结
- mysql预处理学习和总结
- c语言第三课 数组、函数、预处理——ios学习连载三
- 函数传递 静态数组 学习总结
- C语言——数组、函数、预处理
- C语言学习(五)函数,预处理命令
- 指针类型学习总结(函数指针、数组指针和指针数组)
- 常用数组函数函数总结(array)
- 数组预处理
- Tensorflow图像预处理函数学习笔记
- pdo预处理事务(学习)
- 文本预处理学习(1)
- 文本预处理学习(2)
- PHP常用数组函数总结(转载)
- 数组容器中常用函数(总结)
- JavaScript数组函数总结
- C:forEach的使用:仪表所附件显示异常修复
- CUDA编程系列--详解CUDA核函数及运行时参数
- java多线程并发(二)——线程池Executors
- 三、运行Tomcat9.0,jdk1.7出现tomcat unsupported major.minor version 52.0
- 动态规划 10题
- 0419学习总结(数组,函数,预处理)
- 排序模板链表的插入存储和二分查找
- String(byte bytes[], String charsetName)
- vue-router,利用router.beforeEach未登录跳转到登录页
- (c语言)选择排序与冒泡排序
- 埃氏筛法
- 第三方App接入微信登录 解读 (微信开放平台)
- .exe更新demo
- jsp常用内置对象及其使用范围