程序:a.c -> abc文件(二进制) -> ./.abc时程 ps结果
结果相同:可执行文件相同 gcc -V(版本)
直观:程序
返回值 int main(int argc, char **argv)
{
Start 没有程序的入口
数据区;
算法;
}
Scanf("");没有用处.getchar fget fgets
File * 查看文件 elf可执行文件
Printf();声明 user/include/stdio
--库内核使用的变量 va_start()函数
Printf();函数变参
库 libc gcc a.c -o abc -lc 加载库一个默认的
函数库gcc d.c -o abc fun.c
很多.o ->lic.so
/lib/libc 路径 fileno
如果想在开发板上看到结果(库) 启动机器 /lib/libc
Abc + 库 任何程序 qt+qt库
可执行文件夹 pc库 开发板库
Linux lic.so 动态链接库 dll(windows)
动态库 -> 静态库
.so .a
函数的实现 glibc.2.5.tar.gz
C代码所有函数库
String/str*.c ->指针 特别的好
编程没有思路
1.多说话
2.看代码
有项目,有人走
为什么要使用变量
变量:用来保存数据
定义变量
Char a;
Int b;
A='q';
A=100;
B=10;
B='a';
数据类型 变量名字
空间大小
Int b;
B='a';
Int =4;
Short =2;
Char =1;
Long long =8;
4字节对齐小字节对齐
程序优化
时间VS空间
每个地址一个字节空间门牌号
Auto 栈
Extern 声明(没有开辟空间)
Extern int a;
A=10;不对
Static bss段(未初始化数据区初始化为0)
Register没有地址 快反复被使用
Register int a;
A=10;printf("%p\n",&a);
不能取地址
栈:函数开,函数结束 (特点会没的)
Ulimit -a 查看限制
堆:一直有free?
Static 内外无关未初始化为0
堆:思考
Free到底做了什么?是清零么?
C/c++高质量编程
Const int a=10;常量在程序中a的值永远不会被修改?
不对,寻址
A=9;编译不通过
Int *p=&a;
*p=9;可以
Volatile :防止优化易变
Const auto signed int a;
Volatile static unsigned char
Extern short
Register
不变的/善变的 放那里 存数据大小 变量名
Const char *p;
Char const *p;
Char *const p;
Const char const * const p;
常量:9,‘a’,"abcdefg",const int a;(寻址修改)数组名,函数名
存:Char *p="abcdefg";
*p=b;
Segmentation 无效引用
取:Char *ptr=NULL;受保护
Printf("%c\n",*ptr);
终止信号SIGSEGV
除数为0 SIGFPE
捕获除数为0信号
常见的运算符
+-*/%,> >=,< <= == != ,条件1&&条件2 || !, ++ -- whille(p[++i]) while(*p++)逗号 for (表达式最后) ?: 三目运算符 宏 带参数的宏
面试题:1编写一个函数,将某个数的某一位置1或者置0
2编写一个函数,取出某个数的某一位
= 赋值
Ch='\0'==ch=0 ch='0' a=9 a=011 a=0x9
Ch='\0';ascii不是一样的
Ch=10;1010
Ch=012;
Ch=0xa;
Ch='\n';字符二进制
Sizeof()字节数
Sizeof(类型);
Sizeof(数组);sizeof(成员)*成员个数
Sizeof(指针);4 32位机
Sizeof(结构体);
形参 4 指针
Struct t{
Char buf[10]; 12
Char *p[9]; 36
Short a[3]; 8
Char (*q)[7]; 4
Int a; 4
Short c; 4
Void (*p)[8] (void *); 32
}
*地址= 存
= *地址 取
&变量名字 地址[偏移量] +-
Fseek
Char *(地址+偏移量)
Int buf[100];
Buf[9]
*(buf+9);
. ,->
结构体变量.成员
结构体地址->成员
地址();实参
函数指针
变量的初始化
Int a=10;
Int a;
A=10;
Char *p="abcd";
Char *p;p++
*p="abcd";不对
P="abcd"对
{}变量的作用域花括号
练习:1输入9个数,找出最大值!
2输入一个时间,输出下一秒;
输入:2000 1 31 23:59:59
输出:
3输入一个时间,输出是星期几
提示1970 1 1 星期四data