apue 2013-03-15

程序: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=10printf("%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

 

 

posted @ 2013-03-15 21:55  王井玉  阅读(128)  评论(0编辑  收藏  举报