瓜枣三郎
2016-04-10 01:06
采纳率: 0%
浏览 1.5k

关于字符串数组 做指针输入的问题

#include
void gb(char **buf)
{
*buf[0] = 'a'; //这里down掉
}

int main()
{
char b[] = { "aaaasssddddasd" };
printf("%s\n", b);
gb(&b);
system("pause");
return 0;
}

b是常量指针,不能当做左值这个我知道,这个程序里的被调函数也没有修改b的值。
为什么在 *buf[0] = 'a'; 这里会编译不过去呢?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 瓜枣三郎 2016-04-10 01:23

    这是我画的内存模型图 老哥们看看有没有问题(O_O)?

    评论
    解决 无用
    打赏 举报
  • 瓜枣三郎 2016-04-10 01:24

    这是我画的内存模型图 老哥们看看哪里出了问题(O_O)?图片

    评论
    解决 无用
    打赏 举报
  • 小灸舞 2016-04-10 03:40

    首先这个b并不是常量指针,char *b = "aaaasssddddasd";这个才是常量指针,试图修改任何一个字符都会出现异常崩溃
    其次这样的传参方式在很多编译器里过不去(例如VS)
    *buf[0] = 'a';改成(*buf)[0] = 'a';试试

    评论
    解决 无用
    打赏 举报
  • 年迈的程序猿 2016-04-10 06:32

    如图,没交换值,只通过了编译
    图片说明

    评论
    解决 无用
    打赏 举报
  • 红色代码 2016-04-19 17:30

    变量b被编译器编译在只读数据段。不能修改内容

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题