apue 2013-03-17

Gets(buf);buf[i]  for (;buf;)

 

While(buf[i]) i++;字符的ASCII值做判断

For (;buf[i];);  能放在后边空语句

For (i=0;buf[i]==buf0[i];i++);空语句

 

Ch=getchar();

Gets(buf);

 

For (i=0;buf[i];i++)

最后什么条件结束

Gets(buf1);

For (i=0;buf2[i]=buf1[i];i++)

退出条件

Return ;exit(),_exit();进程

Strcpy

Strcat

For (i=0;buf1[i];i++)

For (j=0;buf1[i]=buf2[j];j++,i++)

 

Strstr

Gets(buf1);

Gets(buf2);

字符串的处理函数

重复使用buf

Bzero  memset  atoi   sprintf

Strlen strcpy  strcat  strcmp  strchr  strstr

Strncpy  strncmp  n的多

Memcpy memcmp  内存  

20个数组左右

Man string.h帮助文件档

 

为什么使用指针

指针:变量用来保存地址

小端pc

大端网络

读的顺序

 

指针保存边号,每个地址对应一个字符

编号永远不会变,数据变

 

定义:数据类型*指针类型

Int *p;  p,q本身没有区别

Char *q;

1,*p,*q

2 p+1 q+1  指针也在内存中占地址

3 p-q=3 3个数据单元

还是指针类型3个字符char * 3个数

4指针比较p>q 哪能个前哪个后没有p+q无意义没有乘除

 

 

Int a=10,b=9,c=0,tmp=0;

Int *pa=&a,*pb=&b,*pc=&c,*ptmp=&tmp;

C=*pa+*pb;

*pa=c-*pa;

*pb=*pa+*pb;

*pc=*pb;

Ptmp=pc;

*ptmp=*pb+*pa;

Ptmp=pb;

Pa=pb;

*ptmp\*pa-*pc;

*pb=*pa+*pb;

A b c tmp

 

 

0x12 a 

0x 23 b

0x 34 c

0x 45 tmp

   Pa 0x12

Pb0x23

Pc0x34

Ptmp0x45

 

 

Qt

 

1 tat -xvzf qt

2 cd qt 

3./configure

4.O

5.Yes

6.Make

7.Make install

 

指针与数组:减少代码量多了操作数据方法

Char *p=buf strlen

Gets(buf);

While(*p)  p++;

P-buf  地址差

相距多少个数据单元

把数组练习用指针

 

编写mystrcpy使用指针操作

编写mystr实现字符串的反转

 

While(*p)  p++;

Len=p-buf;

有乱码'\0'

Q=q-1;

While(p<q)

指针写字符串

Char buf[]="abcdefg";

Char *str="abcdefg";常量的起始地址

Sizeof(buf); 7

Sizeof(str);   4

Sizeof(buf);  6

Sizeof(str);  6

Buf[0]='b';

*str='b';段错误

段错误

操作非法数据,除了合法数据之外的数据

合法数据:程序已经定义的数据

Char *p;

Gets(p);四字节

Char buf[100];

 

多级指针

Char *******p;

Char ch='a';

Char *p;

P=&a;

二级指针:1作为函数的参数

2一级指针+malloc=指针数组

Myshell

1 myshell ls

2  ls -l

3  ls -l -a

4  容错

5 cd   /tmp

6  ls -l >abc

7  ls-l | grep "abc"

 

换指针  换内容

 

从键盘上输入5个字符串,打印出最长的字符串

从键盘上输入5个字符串,按字符串大小升序输出

 

 

 

 

posted @ 2013-03-17 22:08  王井玉  阅读(109)  评论(0编辑  收藏  举报