■直接用字符串初始化字符数组。如: char str[10]={“ string!”};/OK* 习惯上可以简写为 char str10]=“ string!”;/OKk 系统会自动在字符串末尾加上“0作为结束 标志
◼ 直接用字符串初始化字符数组。如: char str[10] = { “string!” }; /*OK*/ 习惯上可以简写为 char str[10] = “string!”; /*OK*/ 系统会自动在字符串末尾加上 ‘\0’ 作为结束 标志
■需要注意的是,定义的字符数组的元素个数 定要比字符串中的字符个数至少多一个,因为 多的一个要存储结束标志“0,否则将破坏其 他数据或程序代码。如: char strl6]=“" China”;/OK char str[5]="China; /*ERROR*/ ■也可用如下方式定义: char str[]=string!"/OK 系统会自动在末尾加“\0,str的元素个数为8
◼ 需要注意的是,定义的字符数组的元素个数一 定要比字符串中的字符个数至少多一个,因为 多的一个要存储结束标志 ‘\0’,否则将破坏其 他数据或程序代码。如: char str[6] = “China”; /*OK*/ char str[5] = “China”; /*ERROR*/ ◼ 也可用如下方式定义: char str[ ] = “string!” /*OK*/ 系统会自动在末尾加 ‘\0’,str的元素个数为8
char mark[10]=“ C program.”;/OK* char mark[10] mark=“ C Program.;/“ ERROR* char mark[10] int i for(=0;i<9;i++) scanf( %c",&mark[) mark[=10 /OK*/
char mark[10] = “C program.”; /*OK*/ char mark[10]; mark = “C Program.”; /*ERROR*/ char mark[10]; int i; for(i = 0; i < 9; i++) scanf("%c", &mark[i]); mark[i] = '\0'; /*OK*/
10.2字符串与字符指针 ■同数组一样,可以定义指针变量指向字符串。 实质上是将该字符串的首地址赋值给指针变量 char *ps=“ From one"; 其实质是将无名字符串” from one”的起始地址 赋值给指针变量ps,此时 *ps的值为‘f,(ps+1)的值为’r'。 char strl]=" from two”; char ps= str, 此时是将字符数组str(也是字符串)的首地址赋 值给ps,即ps与&str0]是等价的
10.2 字符串与字符指针 ◼ 同数组一样,可以定义指针变量指向字符串。 实质上是将该字符串的首地址赋值给指针变量 char *ps = “from one”; 其实质是将无名字符串”from one”的起始地址 赋值给指针变量ps,此时 *ps 的值为 ‘f’, *(ps+1)的值为’r’。 char str[ ] = “from two”; char *ps = str; 此时是将字符数组str(也是字符串)的首地址赋 值给ps,即ps与&str[0]是等价的
■字符数组与字符指针的区别 char mark[]="C program char *park ="C program ■这两种方式存储的内存模型是不同的
◼ 字符数组与字符指针的区别 char mark[ ] = “C program”; char *pmark = “C program”; ◼ 这两种方式存储的内存模型是不同的