<深入理解C指针>学习笔记和总结 第五章 指针和字符串

来源:互联网 发布:淘宝数据包 编辑:程序博客网 时间:2024/05/21 19:36
1
NULL与NUL不同。
NULL是用来表示特殊的指针。通常定义为 *(void *)0,而NUL是一个char,定义为\0。两者不能混用。
2
字符常量是单引号引起来的字符序列。字符常量由一个字符组成。也可以包含多个字符。如转意字符,他们的类型是int。
即:字符字面变量的长度是4: char a='a';sizeof(a)的结果为4.
字符串常量是存在于字符串字变量池中。不能操作:
char *p="hello world!"; *p=H; 这样操作会出现警告或者错误。
char p[]="hello world!";后再操作可以。
因为这样表示的是一个数组。第一个“hello world!”在字符串字面量池中,第二个在栈中。第一个不能改变。第二个可以改变。
3 字符串常用函数。字符串比较 拷贝等。
4字符串传递相关。指针 malloc
5 函数指针与字符串
int compare(const char *s1,const char *s2)
{
    return strcmp(s1,s2);
}
可用 typedef int (func)(const char *,const char *);
后在sort函数中应用:
void sort(char *array[],int size, func operation)
{
    int i,swap=1;
    while(swap)
    {
swap=0;
for(i=0;i<size-1,i++)
{
   if(operation(array[i],array[i+1])>0)
   {
swap=1;
char *tmp=array[i];
array[i]=array[i+1];
array[i+1]=tmp;
   }
}
    }
}
应用:
在main中:
char *names[]={"adf","adfff","2rte"..};(5个元素)
sort(names,5,compare);
0 0
原创粉丝点击