字符串是一种重要的数据类型,但是c语言并没有显示的字符串数据类型,因为字符串以字符串常量的形式出现或者存储于字符数组中。
---------《c和指针》第九章
Q:
char s[] = "abc";
char *str = "abc";
void _strtolower(char *str) //转小写 { int i=0; while(str[i]!='\0') { if(str[i]>='A' && str[i]<='Z') str[i]+=32; i++; } str[i]='\0'; }
为什么传递参数,用s可以,用str不可以???
网摘:
用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使用时应注意以下几个问题:
1.
字符串指针变量本身是一个变量,用于存放字符串的首地址。
字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。
字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。
2.
/*******对字符串指针方式**********/ char *ps="C Language"; //可以写为: char *ps; ps="C Language"; /************* 数组方式**************/ static char st[]={"C Language"}; //不能写为: char st[20]; st={"C Language"};
char *name; scanf("%s",name); printf("%s",name);
/********* 数组的方法****************/ char name[20]; scanf("%s",name); printf("%s",name); /************* 给字符针针分配内存空间的办法***********/ char *name; name=(char*)malloc(50); //此时name已经指向一个刚刚分配的地址空间。 scanf("%s",name); printf("%s",name);
int main() { char str1[40]="hello world!"; //char *str1="hello world!"; str1[4]='A'; //若str1是指针型的,编译通过,但运行是此处会段错误 printf("%s\n",str1); return 0; }