引发了异常: 读取访问权限冲突。 p2 是 0x40

时间:2024-04-11 09:55:35

这里分享一个在vs2019下我遇到的一个报错。

这是报错的代码:

引发了异常: 读取访问权限冲突。 p2 是 0x40

 

 

但是当我们这么改 它就可正常输出了

引发了异常: 读取访问权限冲突。 p2 是 0x40

下面我说的问题也许不是这个错误解决的正确原因,但是这个问题足以让大家提高对指针大小的认识: 

在错误的情况下:char str2

字符串str2每一个字符大小为1个字节

在这种情况下执行下面的赋值就会有问题

char* p2 (4个字节)= str2(一个字节) 

而在char* str2的情况下str2每一个字符大小为4个字节

这么修改还是报错,说明确实不是问题,那么真正的问题是什么呢? 

引发了异常: 读取访问权限冲突。 p2 是 0x40

 

但是,当我们这么改的时候:

它也可以正确输出!

引发了异常: 读取访问权限冲突。 p2 是 0x40

总结: 

char str  = "You are ...."  当这么写的时候,只是将Y赋给了str,因为str是字符,存贮不了字符串

但是一下两种写法是可以表示字符串的:

char* str

char str[]