补充申明:Linux C基础笔记共分为四部分,第一部分是Linux下基本命令,以及vi编辑器的使用还有C中的数据类型,第二部分为运算符、常量变量和输入输出。第三部分是控制语句、数组、字符串函数。第四部分为指针、函数以及分配内存管理。在写完这四部分之后我会继续上传数据结构、IO、以及网络编程的学习笔记,大家如果有需要学习Linux下编程的可以关注一下,我会将我所有的学习笔记发布在此供大家一起学习。(在笔记里面会有一些其他博主的总结,如果涉及到实属抱歉,您可以通过邮箱联系我,我会及时修改。[email protected])。
【0】控制语句
分支语句和循环语句
分支语句
if...else...
(1)简化形式
if(表达式)
{
语句块1
}
else
{
语句块2
}
(2)阶梯形式
if(表达式1)
{
语句块1
}
else if(表达式2)
{
语句块2
}
....
else
{
语句块n
}
(3)嵌套形式
if(表达式1)
{
语句块1
}
else if(表达式2)
{
if(...)
{
...
}
else if(...)
{
...
}
else
{
...
}
}
....
else
{
语句块n
}
备注:多个if与多个else if详解:
if与多个else if是分枝情况。只执行其中一条代码,if与多个if是并列情况,会顺序执行
如果是多个else if的话,只要第一个if条件成立,即使满足else if的条件也不会执行else if及else的内容
switch语句
switch (表达式)
{
case 常量表达式1:
语句块1;
break;
case 常量表达式2:
语句块2;
break;
…
case 常量表达式n:
语句块n;
break;
default :
语句块n+1
}
注意:
switch中的表达式可以是整型或字符型表达式
(也可以是枚举类型,新标准的c语言允许为任意类型.)
每个常量表达式的值必须各不相同,否则将会出现矛盾。
当表达式的值与case后面的常量表达式值相等时就执行此case后面的语句。
“case 常量:”只起语句标号的作用。
break语句在switch中的作用:强行跳出switch体转到其它某条语句,每个case后面应有一个break语句(否则程序的执行顺序将改变),default分支后的break可以省略。
各个case出现的先后顺序不影响程序的执行结果.
多个case可以执行一组语句.
【1】控制语句之循环语句
注意:所有的循环语句都需要一个结束标志,如果没有,会是一个死循环
1.goto循环(一般不介意使用,除非是在内核开发中使用)
本质实现的是一个跳转功能,在一个函数体内部执行跳转
next:
....
goto next;
2.while循环
先判断,后执行
while(表达式)
{
语句块
}
3.do...while循环
先执行后判断
do{
语句块
}while(表达式);
4.for循环
for(表达式1;表达式2;表达式3)
{
语句块
}
执行过程:
先执行表达式1,在执行表达式2,如果表达式2成立,则执行语句块,
再执行表达式3,执行表达式2,如果成立,再执行语句块
表达式1:一般为对变量进行初始化
表达式2:一般是一个判断条件,如果不成立,则结束整个for循环
表达式3:一般是循环语句的结束标志,如果表达式2为假,从而结束整个循环
……
【2】数组
1.一维数组
声明数组 type arrayName [ arraySize ]; double balance[10];
初始化数组 double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
冒泡排序: for(i = 0;ia[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
简单快速排序法
每次拿前一个数据与后面的所有的数据进行比较,将最小的数据放在前一个位置,以此类推
2.二维数组
声明数组 type arrayName [ x ][ y ];
初始化 int a[3][4] = {
{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */
{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
备注:行可以省略,列不可以省。
【3】字符串函数
#include
size_t strlen(const char *s);
功能:计算一个字符串的长度
参数: s:指定的字符串的首地址
返回值:字符串的长度
#include
char *strcpy(char *dest, const char *src);
功能:将src的数据赋值给dest,包括src的\0也会一起复制
参数:dest:目的字符串的首地址
src:源的字符串的首地址
返回值:与dest的值一样
注意:必须保证dest足够大,否则会内存溢出
#include
char *strcat(char *dest, const char *src);
功能:拼接两个字符串,将src的数据追加到dest的后面,从destz\0的位置开始追加
参数:dest:目的字符串的首地址
src:源的字符串的首地址
返回值:与dest的值一样
注意:必须保证dest足够大,否则会内存溢出
#include
int strcmp(const char *s1, const char *s2);
功能:比较两个字符串的内容
参数: s1,s2:要比较字符串
返回值:>0 s1 > s2
=0 s1 = s2
<0 s1 < s2
int strncmp(const char *s1, const char *s2, size_t n);
功能:比较字符串前n个字符是否相等
参数:s1:第一个字符串,s2:第二个字符串,n 前n个字符
4【
size_t strlen(const char *s) 求字符串长度
char *strcpy(char *dst, const char *src); 字符串复制
char *strcat(char *dse, const char *src); 字符串链接
int strcmp(const char *str1, const char *str2); 字符串比较
char *strchr(char *str,char c); 查找字符c第一次出现的位置
char ^strstr(const char *str1,const char *str2); 查找子串h