censfypa 2023-02-08 01:15 采纳率: 100%
浏览 23
已结题

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


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

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

  • 写回答

2条回答 默认 最新

  • 榶曲 2023-02-08 05: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这篇博客。

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口