Linux:字符串数组和字符串指针的定义赋值操作

代码:

char * name = "hello world";//“hello world”是一个常量字符串,name指向这个字符串
printf("char * name addr=%p, val=%s\n", name, name);
name = "nihao";//将另外一个常量字符串“nihao"的地址赋值给name
//strcpy(name,"nihao");//试图修改常量字符串“hello world”的值 err
printf("char * name addr=%p, val=%s\n", name, name);

char * name2 = NULL;
//strcpy(name2,"nihao");//给空指针赋值 err
name2 = "nihao";
//name2也指向常量字符串“nihao”的地址, name2的地址等于name的地址
printf("char * name2 addr=%p, val=%s\n", name2, name2); 


char name1[] = "hello world";//定义了一个字符串数组并赋值,该数组是一个局部变量
printf("char name1[] addr=%p, val=%s\n", name1, name1);
strcpy(name1,"nihao"); //给这个字符串数组从新赋值
//name1 = "nihao";//赋值方式错误err
printf("char name1[] addr=%p, val=%s\n", name1, name1);

for(int i=0; i < sizeof(name1); i++) name1[i] = 'A';//给字符数组每个元素赋值
printf("char name1[] addr=%p, val=%s\n", name1, name1);

char* name3 = name1; //定义一个字符串指针,指向字符数组name1
strcpy(name3,"nihao");
printf("char name3 addr=%p, val=%s\n", name3, name3);

//for(int i=0; i < sizeof(name1); i++) name3[i] = 'B';//给字符数组每个元素赋值
char* temp = name3;//指针自加操作会改变指针的值,需要保护一下,使用临时指针去操作
while(*temp) *(temp++) = 'B';

printf("char name3 addr=%p, val=%s\n", name3, name3);
name3 = "good";//name3指向新的字符串常量"good"
printf("char name3 addr=%p, val=%s\n", name3, name3);

结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值