Classyyy 2022-05-17 23:02 采纳率: 40%
浏览 23

C语言字符数组的问题


int main()
{
char a[]="I am a girl.";
a=a+3;
}

此时这是错误的,因为数组名代表地址,这里是常量,它的值不能改变。但是下面的例子呢?

#include <stdio.h>                                    
    int main()
    {
        void change(char p[]);
        char a[] = "I am a girl.";
        change(a);
    return 0;
    }
    void change(char p[])
    {
        printf("%s", p);
        p = p + 2;
        printf("%s", p);
    }

在此例子中,change函数里,p=p+2;却是正确的,形参在接收到了实参传过来的地址后,就存在了p数组,那么p当然也代表了地址,也是常量,为什么这样就可以呢?

  • 写回答

1条回答 默认 最新

  • 昂格莱德 2022-05-18 00:18
    关注

    p不是常量,是把值拷贝过来的字符数组类型的变量

    评论

报告相同问题?

问题事件

  • 创建了问题 5月17日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程