C语言总结

Posted baidawei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言总结相关的知识,希望对你有一定的参考价值。

后缀名.c的文件是C程序的源文件
 
1.新建文件 终端-> cd 路径 ->touch main.c
2.编译文件 终端-> cc -c main.c 会生成出main.o文件 对应.c文件的二进制代码
3.生成启动文件 终端-> cc main.o 会生成出a.out文件,此文件为最终可以执行的程序
4.执行a.out程序 终端-> ./a.out 即可执行程序内容
 
XCode 编译器
Command + R 编译运行
Command + B 编译
Command + ,  设置  Text Editiong -> Line numbers 行号
 
在project下创建多个target  
点击项目名->点击左侧展开->点击下方+即可新建target,也可file->new target.
运行按钮后方可选择默认启动项目
 
#include <stdio.h> //导入系统的stdio.h头文件
int main(){ //定义主函数 返回值为int
    printf(“输出”);
    return 0;
}
main函数是程序的入口,一个标准的C程序只能有一个main函数
 
注释 单行// 多行/* */ 快捷键 command + /
 
变量是存储在内存中的数据。变量名,变量值。
数据类型:int 整型、float 单精度浮点型、 double 双精度浮点型、char字符型、
声明变量 数据类型 变量名;
为变量赋值 变量名 = 值; 
int a = 1; float f1 = 12.12f; double d2 = 12.12; char c = ‘c’;
printf(“%f”,f1);
float 只能保存7位小数,如果超过了7位则不会精确保存。 Double 为16位。
Char 只能保存单个字符,使用单引号,如果写两个则保存最后一个 c=‘cv’ 输出v
 
输出变量的值
Printf(“格式控制符“,变量名)
int        %d
float     %f
double %lf
char     %c
Printf(“%d%f%c”,a,b,c);
 
如果使用变量时未赋值,则值是随机的。
 
格式化 快捷键 选中代码 Command + [左 ]右
 
printf函数的使用
1.printf(“输出信息”);
2.printf(“%d”,number); //输出变量
3.printf(“%5d”,number); //输出5位整数,如果不足5位就会以空格补齐。大于5位都显示。
4.printf(“%04d,number”);//输出4位整数,如果不足就会以0补齐。
5.printf(“%lf”,double);//如果double超过6位则不显示。
6.printf(“%.2lf”,double);//输出double 2位,7位 8位都可以。
7.printf(“%.2f”,float);//输出2位 float
 
删除项目中的target时,左侧管理栏需要删,点击项目中 targets中也要删,上方启动项管理schemmes 点击-号删除。 这三个都要删
 
数据类型转换
    当int a; a=2.5; 输出2 自动截取。 
    Double d = 1; 输出1.000000 自动加0
    Char c = 97; 输出a 为char可以直接赋值ascii码 ‘A’=65 ‘a’=97 ‘0’=48
 
scanf函数 获取用户输入 
Int num;
scanf(“%d”,&num); //使用&符号获得变量地址
 
自定义连接符
scanf(“%d-%d-%lf”,&num1,&num2,&double3)  输入12-23-3.3 
 
scanf函数的缓冲区
1.在执行scanf函数输入数据后,先将数据存储在缓冲区。
2.在执行scanf函数的时候,会先检查缓冲区中是否有数据,如果缓冲区中没有数据,就会让用户输入,如果缓冲区中有数据,则从缓冲区中将数据取出。
scanf(“%d”,num1);
scanf(“%d”,num2);
如在输入第一个num时 输入10空格20回车 则第二个无需输入直接拿出20
rewind(stdin); //清空缓冲区,否则无法输入回车 char会认为回车是一个空格输出
 
交换两个变量的值
1.用第三方变量 temp = num1; num1 = num2; num2 = temp;
2.两数相加再相减 num1 = num1 + num2; num2 = num1 - num2; num1 = num1 - num2;
 
算数运算符
+加、-减、*乘、/除、%余
算数表达式
由算术运算符链接起来的式子,叫做算数表达式。
 
算数运算符优先级
先乘除,再加减。从左到右依次运算。
小括号可以改变优先级
char类型也可以参与运算,按照ascii码数字进行运算
 
复合赋值运算符
+= -= /= *= %=
 
自增自减运算符
++ —
++num; 前++ 先计算后运算 num++;后++ 先运算后++
 
逗号表达式
表达式1,表达式2,表达式3,...表达式n。
从头到尾挨个执行,最后一个表达式的结果就是整个逗号表达式的结果。
 
比较运算符
>大于 <小于 >=大于等于 <=小于等于 ==等于 !=不等于 
 
在C语言中 使用int类型的数据来表示真假, 0代表假 非0代表真。
 
逻辑运算符
&& 与 || 或 !非
优先级 ! && ||
 
if分支结构 
if(真){
}elseif(真){
} else{
}
 
变量作用域
int num = 1; 
 
if(num>0){
    int age=10; 
}//当大括号内的程序执行完毕后,大括号内的变量会被立即回收。
 //在这就使用不了age了,因为已经被回收了。只能在上面访问。
//可以使用num。
 
三元表达式 int num = 2>1 ? 1 : 2 
 
随机数
#include <stdlib.h> //引入系统头文件
调用arc4random_uniform(10); //生成0-9的一个随机数
 
switch语法
switch(rand){
    Case 1:
    Case 2:
        //1和2都执行的
        Break;
    Default:
        Break;
}
xcode快捷键
command+0 隐藏/显示左侧
command+option+0 隐藏/显示右侧
command+12345 切换显示左侧项目菜单
option+左键点击成U型文件 代码分屏
command+shift+f 快速搜索项目
command+shift+o 直接搜索代码的定义
command+R 运行
command+B 编译
command+shift+0 参考文档
 
调试
在行号附近点击即可设置断点,取消断点按住往右一丢。
stop over F7 F8
 
循环
while 先判断后执行
do-while 先执行后判断
for 固定次数的循环
 
break;停止 continue跳出本次继续下次
 
goto跳转语句
将当前的语句跳转到当前函数的其他地方继续执行
goto labelName;
labelName: 在需要跳转的位置写入标签名即可。
 
函数
使用函数来实现代码的重用。
返回值类型 函数名称([参数列表]){
    //代码块
}
viod test(){
}
 
如果想给方法使用文档注释 需要安装插件vvdocumenter
 
变量作用域:
局部变量:
    定义在函数内部的变量,作用于函数内。
    如果没赋值值是垃圾值。
全局变量:
    定义在函数外部的变量,作用于全局。
    一般全局变量定义在#include下面,如果没赋值值是0。
 
参数
void test(int num); //形参:声明函数时的函数称为形式参数。
test(1); //实参: 在调用函数时 实际为形参赋的值
 
返回类型
int getSum(int num1,int num2);
return 立即结束此函数的执行,根据返回类型返回数据。
 
函数定义时需要定义在上面,因为编译器在编译代码的时候是从上到下执行的。
 
预处理代码
在编译之前执行,以#号开头。
文件包含指令:#include
    可以将制定的文件的内容拷贝到写指令的地方。
    #include ”文件路径“ //用于自定义的
    #include <文件路径> //用于系统自带的
如:main(){
#include “/users/david/desktop/test.txt” //将文本内容拷贝至此
}
 
相对路径,绝对路径。
 
多文件开发
1.新增一个.c文件时,如果函数写在其他文件中,调用时,需要先声明函数。
int getSum(int num1,int num2);  //其他文件中实现 
main(){
    getSum(1,2);
}
2.新增一个.h头文件,header file,将函数的声明写在此文件中。
其他文件使用函数时,先#include header文件,这时就可以使用函数了。
 
判断是不是偶数
If((num & 1) == 0) 偶数
交换两个变量的值
A = a ^ b
B = a ^ b
A = a ^ b
 
进制
一种计数的方式,侧重点在于计数的时候是封多少进一。
C语言可以识别的进制 二进制、八进制、十进制、十六进制。
 
二进制:逢二进一,每一位数字由0或者1表示。
0 1 10 11 100 101 110 111 1000
在c语言中写一个二进制,需要在前面加一个0b的前缀。
 
八进制:逢八进一,每一位只能是0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22
在c语言中写一个八进制,需要在前面加一个0的前缀。
%o,将整型数据以八进制输出。
 
十进制:逢十进一,每一位0 1 2 3 4 5 6 7 8 9
在c语言中直接写一个整数,默认就是十进制的。
%d,将整型数据以十进制输出。
 
十六进制:逢十六进一,每一位 0 1 2 3 4 5 6 7 8 9 a b c d e f 
在c语言中写一个十六进制,需要在前面加一个0x前缀。
%x,将整型数据以十六进制输出。
 
十进制转为二进制,除2取余法,直到余数为0或者1,然后将余数倒序就是这个十进制对应的二进制
二进制转为十进制,加权法,将二进制数码的每个位权相加,就是对应的十进制
十进制转为八进制,除8取余法,直到余数为0或者1,就是对应的八进制
八进制转为十进制,加权法,将八进制的每一个数码的位权相加,就是对应的十进制
 
内存中的数据存储单元是由一个个的二进制位组成的,每一个二进制位只能存储0或者1.
将8个二进制分为1组,叫做1个字节,作为存储数据的最小基本单位。
所以只要想往内存中存储数据,最少要存一个字节的数据,也就是8个二进制数据。
8bit = 1byte
1024 byte = 1kb
1024kb = 1mb
1024mb = 1gb
1024gb = 1tb
 
Int 4个字节
double 8个字节
float 4个字节
char 1个字节
 
sizeof运算符
sizeof(数据类型|变量名|常量) 返回这个数据类型变量在内存中占据了多少字节。
sizeof 变量名 常量 可以不加小括号
 
数组
int arr[5]; //声明 声明时必须填写长度 可以是常量、变量、表达式等
arr[0] = 100; //赋值 不要超过下标写5
Int arr1[3] = {1,2,3}; //声明并初始化数组
int arr2[2] = {0}; //初始化所有值为0
Int CCC[] = {1,2,3,4,5,6}
 
C语言中的数组名存储的是数组的地址,所以 不能直接打印数组名,这样得不到数组中元素的值。
所以使用%p打印数组名。
 
数组的长度计算
sizeof(arr) / sizeof(arr[0]) //计算数组总共占用的字节数 除以 每个元素占用的字节数
 
值传递:
Int ,float,double 作为参数 不改变原来的值
 
引用传递:
将数组作为函数参数,改变原来的值,在传递的时候传递的是实参数组的地址
Void test(int arr[],int len){
    for(int I =0;i<len;i++){
        arr[i]=100;
    }
}
Main(){
    Int shuzu[] = {110,1,2};
    Test(shuzu,sizeof(shuzu)/sizeof(shuzu[0])); 
}
 
//数组反转
Int arr[] = {10,23,34,23,5,6,45,7,45,34,8,100}
Int len = sizeoff(arr) / sizeof(arr[0]);
for(int I = 0;i<len/2;i++){
    Int temp = arr[i];
    arr[i] = arr[len-1-i];
    arr[len-1-i] = temp; //交换第0个 和 第12个
}
 
二维数组
二维数组在内存当中创建了指定行,指定列的表格来存储数据
声明二维数组
数据类型 数组名 【行数】 【列数】
赋值
arr[0][0] = 100;
 
声明并赋值
Int arr[][4] = 
{
    {10,20,30,40},
    {11,21,31,41} //自动确认行数
}
 
字符串
在c语言中,使用字符数组来存储字符串数据。
“Jack” = ‘j’ ‘a’ ‘c’ ‘k’ ‘\0’ 代表字符串存储结束。
Char name[] = {“jack”} 自动加\0 长度5
char name[] = “jack”
%s 输出字符串
 
判断字符串长度
While(name[len] != ‘\0’)
 len++;
 
字符串常用函数:
puts():输出字符串.
gets():接收1个字符串数据
Strlen():返回字符串长度
strcmp():比较字符串
strcpy():拷贝到另外一个字符串
strcat():连接字符串
 
指针
变量的地址就叫做指针
 
 

以上是关于C语言总结的主要内容,如果未能解决你的问题,请参考以下文章

2018年秋季学期《c语言程序设计》编程总结

2018年秋季学期《c语言程序设计》编程总结

2018年秋季学期《c语言程序设计》助教总结

博客总结(导航)

C语言基础学习笔记+ C语言进阶学习笔记总结篇(坚持才有收获!)

C语言大总结