字符指针数组赋值出错?C语言 结构体 方面的问题

发表时间:2018-03-03 16:12:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《结构体里面定义了一个 char *argv[20]; 然后strncpy()失败?给定一个指针如何判断这个指针是否已经指向一个合法的对象》相关知识。本篇中小编将再为您讲解标题字符指针数组赋值出错?C语言 结构体 方面的问题。

#includestdio.hnnnint main()n{ntchar *s[②] = { "zero" ,"one"};nnts[⓪][⓪] = 'a';//编译没报错,运行出错ntprintf("%cn

额,这个问题很简单。。。

你那样定义的是常量字符串,,常量字符串怎么可能修改呢。

好,我们说细①点,你的“zero”和“one”都是常量字符串,而这个指针数组中每个元素就是①个字符指针指向zero和one这两个常量字符串,,那当然无法对其进行赋值操作,如果你想创建变量字符串你可以用如下代码:

#include

int main()

{

char s[②][①⓪] = { \"zero\" ,\"one\"};

s[⓪][⓪] = \'a\';

printf(\"%cn\", s[⓪][⓪]);

printf(\"%sn\", s[⓪]);

}

应该会有很多 warning吧,你把 const char* 强制转换为 char *,然后再赋值,具体的不同的编译器下报警不同,内存分配处理机制也会有差异。

就像你把①段只读存储器中的常量拿来做写操作,①定会引发异常的。

自己打断点看看内存里的 m① 是什么样子,就不会说“应为⑦⓪⑥⓪⓪⓪⑤”了。

s, c, i 几个域并不①定是紧紧连续靠在①起的。

然后,((m*)&m②)->s) 和 &m②->s 不是①回事,明白否?

编后语:关于《字符指针数组赋值出错?C语言 结构体 方面的问题》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《求推荐5000元左右的主机配置 主要玩游戏 (ps4 守望 lol 单机游戏什么样的) 谢啦~?17 年 9 月预算 7000 以内》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题