Makefile 编译工程
vim makefile:
hello:hello.o
(tab)gcc hello.c- o hello
隐藏规则:(不用打自己会执行)
hello.o:hello.c
gcc -c hello.c -o hello.o
Target=hello
Object=hello.o(变量表示的好处,可使多个文件同时赋予变量)
$(Target):$(Object)
(按tab)gcc $(Object) -o $(Target)
hello.o:hello.c
GDB调试
gcc 文件名 -g
gdb 文件名
l(列出) b(break 断点 b+行号,运行到这里停止) info b(查看断点) n(按步运行 run 程序跑一遍(设置断点,停住之后才能n 一步一步运行)) s(进入函数)return(r 退出函数)
基本步骤: 如gcc 5.c -o 5 -g
gdb
shell:命令解析器(脚本)
新建文件:vim shell.sh
#!/bin/bash "路径解析下面的语句"
Tmp = "hello"
echo "hello world !"
echo $Tmp
echo $0 "参数"
echo $"first $1"
echo $"second $2 "
echo $"third $3 "
echo $"all $*" "几个参数"
echo "sum $#"
(保存退出 运行:./shell.sh)
循环
for dir in $1 $2 $3 $4 $5
do
mkdir $dir
cd $dir
touch $dir
echo "hello $dir" > $dir ">覆盖" ">>追加"(如 echo "world">a)
cd ..
done
判断
1.
#!/bin/bash
PATH="/home/suqian/shell/PATH.sh" (输入地址判断该地址存放的是文件还是目录)
if [ - d $PATH ]; then "注意中括号两端要空一格"
echo "DIR"
elif [ -f $PATH ]; then
echo "FILE"
fi
2.
#!/bin/bash
read key (变量key,判断输入的是字母大小写还是数字还是符号)
case "$ {key}" in
[A-Z]) echo "UpperLetter";;
[a-z]) echo "LowerLetter";;
[0-9]) echo "Number";;
*) echo "ERROR";;
esac
C语言
整型 int
整型 占4个字节
float 占4个字节
double 占8个字节
char 占一格字节
查头文件函数 :man 3 strlen
无符号型长度(%u)>有符号型长度
const volatile 修饰变量的时候表示什么意思?
答:const修饰只读变量,不能通过变量修改对应内存中的命令。
volatile防止编译时被优化。
\t :空出一格tab的距离;\n:换行
char a (int) a[i] 由字符强制转化为整型
逗号隔开执行后一个式子:3+5,6+8 =14
++i,--i 在执行i的语句前,先使i的值加/减1
i++,i-- 在执行i的语句后,使i得值加/减1
a=4 求:自加减优先级更高:
a+ =a++(9) a+=++a(10) ++a+=a(10) ++a+=a++(11) ++a+=++a(12)
a==0优于0==a 如果少打一个=第二种会报错,第一种可能执行出错误答案
控制结构
if : if ( )
if ( ) 语句1
else 内嵌if
if ( ) 语句2
else 语句3
switch:
switch (表达式)
{
case 常量表达式 1: 语句1; break;
case 常量表达式 2: 语句2; break;
case 常量表达式 n: 语句n; break;
default : 语句n+1;
return 0;
}