C高级(学习)2024.8.1

目录

shell命令

数组

数组的赋值

数组的调用

遍历数组

函数

函数的定义方式

函数调用

分文件编程

源文件

头文件

include引用时“”和<>的区别

编译工具

gcc编译工具

gdb调试

make工具

定义

Makefile格式

Makefile管理多个文件

Makefile变量

自定义变量

预定义变量

自动变量

Makefile四种方式总结

第一种

第二种

第三种

第四种

shell命令

数组

数组的赋值

1.array=(1 2 3 4 5)


2.array=($1 $2 $3 $4)  命令行传参


3.read a b c
   array=($a $b $c)


4.read -a array  终端输入数据到数组中

数组的调用

${array[i]}        数组下标0~n-1,通过下标获取数组元素
array[i]=100        对数组元素重新赋值

${array[@]}  遍历数组 
${#array[@]}  计算数组元素的个数

遍历数组

1.echo   ${array[@]}  


2.for ((i=0;i < ${#array[@]};i++}
   do
           echo -n  ${array[i]}
   done

函数

函数的定义方式

1.函数名()
  {

        表达式

  }

2.function  函数名()
  {

        表达式

   }

函数调用

函数名  参数列表

#!/bin/bash
fun()
{
    echo "请输入两个数字:"
}
fun
read NUM1 NUM2
fun1()
{
    NUM=`expr $1 + $2`
    echo "两数之和为:" $NUM
}
fun1 $NUM1 $NUM2

函数内$1 $2表示的是传递的参数

分文件编程

源文件

.c结尾的文件

包含main函数的.c

包含子函数的.c

头文件

.h结尾文件

头文件、宏定义、typedef 、结构体、共用体、枚举、函数声明

include引用时“”和<>的区别

<>去系统目录查找头文件
“”先从当前目录下查找,如果没有再去系统目录查找头文件。

系统默认搜索路径
/usr/include
/usr/local/include

追源码:
        ctrl   单击
返回:
        ctrl    alt   -

编译工具

gcc编译工具

预处理:#开头内容,展开头文件、替换宏定义、删除无用注释,不会检查语法错误
    gcc  -E  xx.c -o xx.i
编译:检查语法错误,有错就报错,无错就继续生成汇编文件
    gcc  -S xx.i -o xx.s
汇编:    将汇编文件生成不可执行的二进制文件
    gcc  -c  xx.s  -o  xx.o
链接:    链接库文件,生成可执行的二进制文件
    gcc   xx.o  -o   xx

gdb调试

gcc -g xx.c
gdb  a.out

r        运行代码
l        查看文件
b        行号或者函数名:添加断点
info b        查看断点情况
d num(断点编号)        删除断点
p 变量名        查看变量的值
s/n        单步运行,s会进入子函数顺序执行;单步跳过,n不会进入子函数
c        执行到下一个断点的位置
help        帮助
q        退出

        步骤:代码写好后,先通过gcc -g进行编译代码,没有错误后,可以通过gdb  a.out进行调试,输入l查看文件内容,通过b设置断点,输入r进行运行,n或s进行单步调试,q退出

make工具

定义

make工程管理器就是一个“自动编译管理器”这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作。Makefile或makefile是make读取的唯一配置文件

Makefile格式

目标:依赖
        命令
注意:命令前敲TAB

gcc编译步骤中,可以按照如下步骤的逆序写Makefile文件
gcc  -c  xx.c  -o  xx.o     目标:xx.o  依赖:xx.c
gcc xx.o  -o  xx              目标:xx    依赖:xx.o

test:test.o
    gcc test.o -o test
test.o:test.c
    gcc -c test.c -o test.o

使用make进行编译

Makefile管理多个文件

1.创建多个文件


2.写一个Makefile文件

        具体的见文档末尾的四种总结Makefile文件

Makefile变量

自定义变量

一般大写,取变量的值$(变量名)
= 按递归方式展开
:= 直接赋值 (当前的值是什么就立即赋值)
+= 追加新的值
?=判断之前是否定义,如果定义了,就不重新赋值;否则赋值

预定义变量

系统预先定义好的一些变量,可能有默认值可能没有默认
RM    文件删除程序的名称,默认值为rm -f
CC     C编译器的名称,默认值为cc。
CPP  C预编译器的名称,默认值为$(CC) –E。
CFLAGS   C编译器的选项,无默认值。
OBJS   生成的二进制文件或目标文件,自己定义

自动变量

$<        第一个依赖的名称
$@         目标文件的完整名称
$^        所有不重复的依赖的名称

所有:%

Makefile四种方式总结

第一种

test:main.o add.o
	gcc main.o add.o -o test
main.o:main.c
	gcc -c main.c -o main.o
add.o:add.c
	gcc -c add.c -o add.o

.PHONY:clean
clean:
	$(RM) *.o test

第二种

CC=gcc
CFLAGS=-c -g -Wall
OBJS=main.o add.o
test:$(OBJS)
	$(CC) $(OBJS) -o test
main.o:main.c
	$(CC) $(CFLAGS) main.c -o main.o
add.o:add.c
	$(CC) $(CFLAGS) add.c -o add.o

.PHONY:clean
clean:
	$(RM) *.o test

第三种

CC=gcc
CFLAGS=-c -g -Wall
OBJS=main.o add.o
test:$(OBJS)
	$(CC) $^ -o $@
main.o:main.c
	$(CC) $(CFLAGS) $< -o $@
add.o:add.c
	$(CC) $(CFLAGS) $< -o $@

.PHONY:clean
clean:
	$(RM) *.o test

第四种

CC=gcc
CFLAGS=-c -g -Wall
OBJS=main.o add.o

test:$(OBJS)
	$(CC) $^ -o $@
%.o:%.c
	$(CC) $(CFLAGS) $< -o $@

.PHONY:clean
clean:
	$(RM) *.o test
  • 32
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值