| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4813 人关注过本帖
标题:对自己定义的结构体中的成员进行定义时,出现错误,找不到原因
只看楼主 加入收藏
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
收藏
得分:5 
char a[20] = "2131";
为什么可以,是因为运行的时候就已经分配了栈空间,并且给该空间赋值为"2131";
 a = "12313";
至于为什么不能再次赋值是因为虽然a相当于指针,但a并不是指针,它所指向的地址并不不能修改,只能修改给定空间的值
你可以修改
a[0] = 'a';
a[1] = 'b';
想要修改整个空间的值可用strcpy()

char* p = "1123";
p = "131231";
为什么可以因为p为指针类型,可以指向任何地址
不过需要注意p所指向的地址可以随意更改,但是p所指向的地址的值是不可以修改的
*(p+1)= 'a';
是不可行的,因为p所指向的为字符串常量区,是不可修改的

当然下面是没有问题的,因为a所指向的为栈空间,所以可以修改
char a[10] = "qweqwe";
char* p=a;
*(p+1) = 'a';

至于为什么
string a = "123121";
a = "3123123";
可以是因为string类会重载运算符,内部还是用类似strcpy来实现的。

2017-06-09 21:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
哈哈哈哈~久久和九转灌水贴有几楼曾经讨论过这个问题~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-09 23:02
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
补充一下~
char* a="123";
char* b="123";

a和b的值是相等的哦~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-09 23:04
快速回复:对自己定义的结构体中的成员进行定义时,出现错误,找不到原因
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044147 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved