11.C语言 字符串和指针

1.字符串的特点

字符串的本质就是一个特殊的数组

数组中保存的都是字符,并且数组必须以\0结尾

2.如何定义字符串?

char str1[]={'l','z','f','\0'};

 

 3.数组的特点

数组名保存的就是数组的地址,所以我们可以直接将数组名赋值给一个指针变量

4.正是因为如此,所以定义字符串有了第三种方式

char *str3="lzf";

5.通过指针变量接收字符串和通过数组变量接收字符串有什么区别?

通过数组变量接收字符串,这个字符串存储在栈中

通过指针变量接收字符串,这个字符串存储在常量区中

存储的区域不同

6.存储的区域不同带来的影响

6.1存储在栈中的数据,是可以修改的

6.2通过数组变量接收字符串,那怕字符串中的数据相同,每次定义也会重新分配存储空间

     通过指针变量接收字符串,只要字符串中的数据相同,就只有第一次定义分配存储空间   

     通过指针变量接收字符串,只要字符串中的数据相同,就只有第一次定义分配存储空间 

 

   

 

存储在常量区中的数据,是不能修改的

 char *str3="lzf";

str3[2]='X';

printf("str3 = %s\n",str3);

上面不行,会报错,因为不能修改

总结:定义字符串的三种方式:

    char str1[]={'l','z','f','\0'};
    char str2[]="lzf";
    char *str3="lzf";


字符串与指针的注意点

1.通过{}定义的字符串,不能直接赋值给指针变量

例如以下:

char *p1={'l','z','f','\0'};

只有通过“”定义的字符串,才能直接赋值给指针变量

2.如果在一个函数中通过数组保存了一个字符串,那么这个字符串不能作为函数的返回值,因为外界获取不到

如果在一个函数中通过指针保存了一个字符串,那么这个字符串可以作为函数的返回值,因为外界可以获取

通过数组保存的字符串存储在栈

通过指针变量保存的字符串存储在常量区

 

存储在中的数据有一个特点:离开作用域就会自动释放

存储在常量区中的数据有一个特点:只有程序结束才会释放

3.如果数组作为函数的参数,那么函数的形参最好写指针而不要写数组

 

结论:以后想在函数中返回一个字符串那么这个字符串就是以指针类型定义的。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值