热键:双击:tab查看输入路径下包含的文件
tab:命令补全 ↑↓:上一个或者下一个输入的命令 ctrl + c :结束当前进程
Makefile :
自动编译格式:
目标 :依赖(.o文件)
条件
make clean :清除
设置清除格式:
.PHONY: clean
rm * 文件名
gdb工具:调试程序
gcc -g 使编译程序能够使用gdb调试
调试方式:gdb+程序名 进入gdb模式
list :列十行 break数字 :在某一行设置断点,或者设置函数名
next :一条一条语句执行 state :进入函数 return : 从函数返回 run :从头运行
print :打印值 continue :从断点继续运行 quit :退出gdb格式 info :查看断点信息
脚本使用基础 :
最重要的脚本为Bush 脚本后缀为.sh
写脚本:开头为#!/bin/sh
echo :输出 echo 'hello' > a 将hello写入a,为覆盖模式
echo 'hello' >>a 将hello写入a,为追加模式
$1第一个参数 $2第二个参数 $3第三个参数 $*所有参数 $0脚本名本身 $#参数个数
脚本用#注释
脚本循环结构之一:
for 参数 in $1 $2 $3 $4
do
done
判断文件类型脚本:
if [ -z $PATH ] ; then
echo "error"
exit
fi
if [ -d $PATH ] ; then
echo "DIR"
elif [ -f $PATH ] ; then
echo "FILE"
fi
读取输入字符类型脚本:
read key
case "${key}" in
[A-Z] ) echo "Upperletter";;
[a-z] ) echo "Lowerletter";;
[0-9] ) echo "Number";;
*) echo "error";;
esac
输入一大段代码的情况:
cat > $file <<EOF
代码
EOF
C语言基础(一)
sizeof 关键字的一种,求数据长度
有符号整型化为无符号整型反码加一
const修饰变量后为只读变量,不能通过变量修改内存值
volatile:防止编译时被优化
指针本身的大小由机器系统字长决定
堆和栈的区别: 一、堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
二、堆栈缓存方式区别:
1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放; 2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
三、堆栈数据结构区别: 堆(数据结构):堆可以被看成是一棵树,如:堆排序; 栈(数据结构):一种先进后出的数据结构。
static的用法:
第一、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。
第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
第三、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;
(1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰
(2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)