山鹿有角 2021-08-21 10:06 采纳率: 50%
浏览 30

C语言字符数据和字符指针,求解

下面程序的运行结果是()

#include <stdio.h>
#include <string.h>
void main()
{
char * p1, *p2, str[50] = "abc";
p1 = "abc";
p2 = "abc;

strcpy(str+1, strcat(p1, p2));

printf(%s\n",str);
}

这道题答案是编译输出错误,但答案的结果是 _p1 指向的是常量区,所以编译错误。_
而我的理解是:
p1 p2 都是定义了俩个指针变量,存储在栈区
“abc”, 是字符常量,存储在常量区,并且不可更改
str[50] 是在栈区开辟了一片名字叫做 str 的空间,大小是50,然后将“abc”拷贝了一份到栈区
p1 p2 都指向常量区的字符串“abc”的首地址
"abc" 字符串的本身就代表的是它的首地址
strcpy 和 strcat 的参数都是要拷贝的首地址
strcpy(p1,p2) 将p2的地址拷贝到p1中
但是
p1, p2 都指向的是地址啊,为啥有错误呢?!*&%¥#@~

  • 写回答

2条回答 默认 最新

  • StjpStjp 2021-08-21 10:22
    关注

    p1,和p1是黏一起的,且和char不是黏一起的

    评论

报告相同问题?

问题事件

  • 创建了问题 8月21日

悬赏问题

  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥15 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)