l565887 2022-03-16 14:26 采纳率: 0%
浏览 5758

0x00007FFA837F2487 (ucrtbased.dll)处(位于 指针.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000068 时发生访问冲突

问题遇到的现象和发生背景

img

运行结果及报错内容

#include <stdio.h>
int main()
{

char* p = "hello";
char c[10] = "hello";
printf("%s\n", p[0]);
printf("%s\n", c[0]);

}
出现标题错误求大家帮忙

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-03-16 14:40
    关注

    printf("%s\n", p[0]);
    说明一下:
    %s格式会认为你后面的变量是字符串地址,但p[10]是p字符串的第一个字符。程序会认为这个字符的ASCII码是一个地址,从而到这个地址取读字符串进行输出,导致错误提示为0x0000000000000068这个地址不能访问,有冲突。因为这个地址是系统保护地址,不能访问的。0x68正好是字符h的ASCII码
    修改方法:
    如果想输出字符串,那么将p[0]改为p,如果想输出p[0]这个字符,那么用%c

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月16日