字符串指针一些总结
梳理字符与字符串:
① %p 为输出地址格式;
如:printf(“%p”,“we”); //表示输出为字符串we的地址
②字符串要点:
char a[]=“we love code”; //双引号表示字符串,与下面初始化等价
char a[]={'w','e',' ','l','o','e',' ','c','o','d','e','\0'}; //必须最后有‘\0’,才能表示字符串,否则为字符数组。
char a[100]=“we” “love“ “code”; //输出结果为we love code,将拼接一起,除非用转义可保留引号;若末尾未填写完则全为‘\0’;
③printf(“%p,%c”,“we”,*“Love”); //输出结果分别为地址和 L,原因在于整个引号中的内容作为指向该字符串存储位置的指针,因此*"Love"为所产生地址的值;
ps:双引号赋值默认在尾添加‘\0’符号。
④指针更改出错问题:
char *p=“I Love code”; //指针初始化;
p[3]=‘i’; //编译器可以允许这样做,但容易出错,有些编译器会中断,切勿如此使用。
⑤ 指针字符串与指针指向指针:
char *p=“I Love code”;
char *f;
f=p; //实际将指针f指向了“I Love code”的地址,相当于指针p与f均指向此地址。原因是指针指向肯定比赋值快。
⑥char *p[2]={“we are fool”,“you are fool”}; // 有10个指针
p[0]为we are fool,p[1]为you are fool;*p[0]为‘w’,*p[1]为‘y’;
p[0][0]为‘w’,p[1][0]为‘y’; //由于数组符号与指针之间的关系,类似*f=“you”;f[0]为y;
字符函数:
scanf()函数,若为%s,则读入下一个空白字符(空格,制表符或换行符)终止;若指定字符宽度%10s,则字符宽度终止或空白字符终止(或的关系);
strcar()( string concatenation) 函数接受两个字符串参数。它将第二个字符串的一份拷贝添加到第一个字符串的结尾,仅而使第一个字符串成为一个新的组合字符串,第二个字符串幵没有改发。