censfypa 2023-02-07 17:15 采纳率: 100%
浏览 24
已结题

c语言的,strcpy里有表达式 是先算表达式后覆盖吗?


int n;char[20]=" 123456";
strcpy(ch+4, "123456");
n = strlen(ch);

为什么n的值是10?还有ch+4字符串+数字到底是什么意思?

  • 写回答

2条回答 默认 最新

  • 榶曲 2023-02-07 21:49
    关注

    我想你的具体代码应该是下面这个

    int n;
    char ch[20]=" 123456";
    strcpy(ch+4, "123456");
    n = strlen(ch);
    
    1. ch+4字符串+数字到底是什么意思?
      ch是数组名,表示数组首元素的地址,ch+1表示数组下标为1的地址,ch+4表示数组下标为4的地址,这里有一篇初始指针应该能更好的解决这个问题。
    2. strcpy里有表达式 是先算表达式后覆盖吗?
      是的,strcpy是一个函数,括号内的为其参数,传过去的是一个完整的值,函数接收后,才会去实现函数的功能。
    3. 为什么n的值是10?
      首先,strcpy是一个拷贝函数,将字符串"123456"拷贝到ch+4,也就是数组下标为4的地址处,原数组的数据为" 123456",数组下标为4的值为4,将字符串拷贝到该位置,最终结果为" 123123456",共十个字符。
      最后,strlen是用来计算字符串长度的,一个字符串的最后一个字符是为'/0',只要我们定义了字符串编译器会默认加上'/0',strlen在统计字符个数时不会加上'/0',所以最终结果有十个字符,具体可以看sizeof和strlen这篇博客。

    有什么地方有问题可以指出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    censfypa 2023-02-08 04:26

    太感谢你了

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月8日
  • 创建了问题 2月7日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部