Linux下的C语言基础-1
1.liunx命令补充:
拷贝文件或目录 cp 文件 目标路径 注:如果拷贝的文件在目标路径下存在 则替换
目录或文件改名 cp 原文件名 新文件名
移动文件或目录 mv 文件 目标路径
目录或文件改名 mv 原文件名 新文件名
Ctrl + alt + t 是重新打开一个shell终端
Ctrl + shift + n 是打开与当前路径一样的shell终端
******************************************C基础******************************************
2.C基础:
C语言诞生于20世纪70年代的贝尔实验室 由B语言基础上设计的
用来实现UNIX操作系统
为什么要学C语言???
C语言的存在大部分原因是效率高,(执行效率)
而且可以直接操作内存地址。
3.学习C语言学习什么???
编程的逻辑--->控制语句--->编程思维(面向过程)
C的强大--->不管什么平台都可以上手
物联网路径--->裸奔8051--->皇帝的新装 FreeRTOS uC/OS III--->潮流新装--->liunx ARM
一路走来 谁能逃开 C???
4.
#include <stdio.h>//包含头文件(stdio.h)
// # 预处理符号
int main(int argc, const char *argv[])//每个C程序必须有一个main函数 代表程序的入口
{
printf("hello world\n");
printf("hello world\n");//代码块
printf("你好\n");
return 0;//返回值 给操作系统返回,0代表正常退出,非0代表不正常退出
}
gcc 编译一个 .c程序分4步
1.预处理 gcc -E -o xxx.i xxx.c
2.编译 gcc -S -o xxx.s xxx.i
3.汇编 gcc -c -o xxx.o xxx.s
4.连接 gcc xxx.o -o xxx
#include <stdio.h>中的 <> 表示在编译时去系统默认的路径去找对应的文件
“ ” 表示编译时先在先在当前目录下找对应的文件,
找不到再去系统默认路径下去找。
*****************************************数据类型*****************************************
位:bit
字节:byt 一个byt=8bit;
内存是字节编址,每个字节为它建立一个内存地址“号”
int 型所占字节长度为4字节
char 型所占字节长度:1字节
float 型所占字节长度:4字节
**********************************************************************************************
基本类型:
字符型:char unsigned char
整型:
短整型 :short 或 short int 占2个字节
整型 :int
长整型 :long 或long int 4字节
实型(浮点):
float 单精度 4字节
double 双精度 8字节
long double 12字节
构造类型
数组
char c[32];
结构体
struct
共用体
union
指针:
char *
int *
空类型
void
**************************************变量***************************
变量的命名:
自动 int i;
<存储类型><变量类型><变量名>
变量名不许与C语言中的关键字重复
关键字共32个
12个变量类型
6个存储类型
12个控制语句
sizeof() 注:大部分称为关键字 有些老师或教材也称为单目运算符 肯定不是函数
typedef
初始化:定义变量时为变量赋值 是初始化
赋值: 定义变量后 再为变量赋值 赋值
*****************************运算符*****************************
变量前++:先自增再参与运算
变量后++:先参与运算后自增
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i;//定义变量
int j;
i = 10;
//j = ++i;//先自增再参与运算
j=i++;//先参与运算后自增
printf("j = %d\n i = %d\n",j,i);
return 0;
}
***************************大小端************************
大端:高位数据存放在低地址
小端:高位数据存放在高地址
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i= 0x12345678;
void *p = &i;
printf("%x\n",i);
putchar(10);
for(int a =0;a<4;a++){
printf("%x\n",*((char *)p++));
}
return 0;
}
************************************输入输出*********************************
输出:int printf(const char *format, ...);
int a = printf("hello world\n");
//功能:格式化字符串输出
//参数:控制格式 %xxx,输出变量名
//返回值:成功返回打印字符的个数 失败返回 -1;
格式控制参数: %d 整型
%ld 长整型
%c 字符
%s 字符串
%x 十六进制
%#x 带0x的十六进制
%p 地址
%f 浮点
%.2f 保留小数点后两位
%% 打印%
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 10;
int x = 0x12345678;
char c = 'A';
char *p = "hello HQYJ";
float f = 3.1415926;
int a = printf("hello world\n");
printf("%d\n",a);
printf("*****************************************************\n");
printf("%d\n",i);
printf("%x\n",x);
printf("%#x\n",x);
printf("%c\n",c);
printf("%s\n",p);
printf("%p\n",p);
printf("%f\n",f);
printf("%.2f\n",f);
return 0;
}
输入 : int scanf(const char *format, ...);
功能:从键盘读入数据,存入指定类型的存储单元中
参数 :指定输入格式
返回值:成功返回输入变量的个数 失败返回 -1;
输入格式参数:
%d 整型
%c 字符
%s 字符串
%f 浮点
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a;
char c;
float f;
char *s;
printf("请输入int变量\n");
scanf("%d",&a);
printf("请输入char变量\n");
scanf("%c",&c);
scanf("%c",&c);
printf("请输入float变量\n");
scanf("%f",&f);
printf("请输入字符串\n");
scanf("%s",s);
printf("请输入3个整形数据\n");
int i,j,k;
scanf("%d%d%d",&i,&j,&k);
printf("i=%d\nj=%d\nk=%d\n",i,j,k);
printf("********************************************\n");
printf("您输入的int型数据是:%d\n",a);
printf("您输入的char型数据是:%c\n",c);
printf("您输入的float型数据是:%f\n",f);
printf("您输入的字符串:%s\n",s);
return 0;
}
单个字符输出:
int putchar(int c);
#include <stdio.h>
int main(int argc, const char *argv[])
{
char *s = "hello world";
printf("%s",s);
putchar(10);
putchar(‘A’);
putchar(10);
return 0;
}
获取单个字符:
int getchar(void);
#include <stdio.h>
int main(int argc, const char *argv[])
{
char c = getchar();
printf("%c\n",c);
return 0;
}
*********************************控制语句*********************************
if 条件判断
if语句是用来判断给定的条件是否满足,根据判断结果(真或者假)执行给出的操作
if语句有三种形式
1.if(表达式) 语句1;
单分支结构,判断表达式为真则执行 语句1 为假则不执行
2.if(表达式) 语句1;else 语句2;
双分支结构,判断表达式为真则执行 语句1 为假则执行 语句2;
3.if(表达式0) 语句0;
else if(表达式1) 语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
注:紧随if或者else后只能有一条执行语句
如果if else 有多条语句 可以加{}来限制
练习:输入一个字符(26个英文字母) 如果是小写的 把它转换成大写输出
如果是大写的 把它转换成小写输出
如果输入的字符不在26个英文字母范围内
则输出提示信息 内容自便
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("请输入一个英文字母\n");
char c = getchar();
if(c<='Z'&&c>='A'){
c+=32;
printf("%c\n",c);
}
else if(c<='z'&&c>='a'){
c-=32;
printf("%c\n",c);
}
else
printf("你输入的是啥啊\n");
return 0;
}
while 循环语句
C语言中有两种循环结构
1.当型循环结构
2.直到型循环结构
while就属于当型循环结构
while(表达式)
{
循环体语句;
}
先判断表达式,再执行循环体中的内容(表达式为真则执行 为假则不执行)
break 转向语句:
跳出循环(所有循环)执行后边的语句
continue 转向语句:
结束本次循环,不在执行循环体内的continune后的语句,转入下次循环