C语言基础知识之(十四):指针和字符数组、字符串数组

来源:互联网 发布:json对象合并成一个 编辑:程序博客网 时间:2024/05/17 21:54

1、定义字符数组存储字符串

char str[ ] ="iPhone";//一维字符数组,末尾含有’\0’字符。 

定义一个字符指针指向字符数组

char *p = str;  

使用指针p访问字符

for (int i = 0; i< 7; i++) {

    printf("%c ", p[i]);

}

使用指针p打印字符串

printf("%s\n",p);//p = str

printf("%s\n",str);

 

   

2、定义指针,指向字符

char *str ="iPhone";//指针str存储的地址存储常量“iPhone”。  

使用指针输出字符,读取了常量”iPhone”.

for (int i = 0; i< 7; i++) {

    printf("%c ", str[i]);

}

输出字符串

printf("%s\n",str);

又如:

char *b ="iPad";"iPad"在常量区

指针b指向常量区的字符串

b[0] = 'I'; *(b+0) ='I';//只能读取,不能赋值。此式不成立。

   

char a[] ="iPhone";//字符数组

a是数组,存储在栈区,可以修改和读取存储单元中的数据。

“iPhone” 字符串常量,存储在常量区,常量区的数据不能修改。

说明:

指向数组的指针可以修改和读取数组元素;指向常量字符串的指针只能读取数组元素。

 

   

3、指针数组:数组中的元素都是指针

   

char * names[3] ={"zhangsan", "lisi", "wangwu"};// 字符串指针数组

names的本质是一维数组(数组中存储了3个char * 类型的指针)

names存储的数组元素是字符型指针char *(字符指针指向了常量字符串)

printf("%s\n",names[0]);

names[0] ="zhaoliu"; // 第一个字符指针,指向新的字符串,指针重指向

打印指针

for (int i = 0; i< 3; i++) {

    printf("%s ", names[i]);

}

       

4、二维数组存储多个字符串

char names[3][20] ={"zhangsan", "lisi", "wangwu"};

   

names本质是二维数组

names存储的数组元素是字符数组(字符数组中存储的是字符串,拷贝自常量字符串)

printf("%s\n",names[0]);

strcpy(names[0],"zhaoliu");

printf("%s\n",names[0]);//names访问数组第一个元素即字符数组,不能直接赋值,只能拷贝。



0 0
原创粉丝点击