-
你写完了 char * s1 ="string"
我在这里弄错了,所以所述字符串 0 在常量区域,而 s1 在堆栈上。
while(*ps1++=*ps2++)
当你运行这句话时,ps1 需要写入常量,它自然会报错。
这是一个问题。
只是,不是
所有这一切都是连接 S1 和 S2
-
声明为 char * s1 ="string"将来,s1 指向一个字符串常量,并且您不能尝试更改 s1 将来指向的值。
声明 char s1[20] 后,用于表示"string"此字符串 [初始化] 数组 s1[20]。 在这种情况下,您可以更改 s1 指向的值。
而(*ps1++=*ps2++),估计你把==写错了=。 把它写成一个等号,就是这样。
为 *ps1 赋值,即为 *s1 赋值。 当然,有一个错误。
-
根据你的程序,你应该做的是合并字符串:将 s2 添加到 s1 的末尾。
while(*ps1)
ps1++;
将指针移动到 s1 的末尾。
while(*ps1++=*ps2++)
S2 连接到 S1,直到 S2 结束。
当你把它声明为 s1[20] 时,它是 20 个字符的空间,可以稍后编写。
当声明为 *s 时,仅"string\"空格的长度,ps1 指针在移动到 s1 末尾时不可写。
-
以程序的具体执行过程为例给大家讲解一下,希望大家能理解:
1.当程序打开时,也就是当程序开始运行时,它会首先向操作系统请求独占内存空间(在程序整个执行过程中没有释放的空间),操作系统会响应请求,给程序分配一个逻辑连续(实际上是将分散的内存空间映射到连续空间)的内存空间, 此时,程序获取空间段的逻辑地址信息,并根据地址将程序**段和数据段加载到内存中,此时将程序加载到内存中,程序完全加载。
2.当程序需要更多内存空间时,会再次向操作系统发送请求,操作系统会根据请求再次为程序分配内存空间,在执行处理任务时释放内存空间。 同时,由于操作系统的存储保护,程序只能访问运行时申请的内存空间,而不能访问其他程序的内存空间。
3.当程序完成执行或关闭程序时,程序占用的所有内存空间都会被释放。
当您再次打开程序时,请重复上述过程。
以下是您的问题:
1.程序运行时会被调用到内存中,程序在内存中的位置在不同时间运行时可能会有所不同:每次程序运行时,程序都会重新应用于操作系统的内存空间,然后操作系统会给程序分配新的内存空间, 因此,当程序在不同时间运行时,程序在内存中的位置是不同的。
2.数据在内存中的位置也可以不同:当程序请求内存空间时,操作系统会将请求的内存空间的地址传递给程序,虽然数据的位置不同,但程序知道数据的地址,所以程序仍然可以根据地址找到它需要的数据。
-
此提示出现在运行阶段,指示程序正在运行以访问不可访问的内存,即访问越界。
由于未读取提示,因此它存在于读取访问中。 一般情况下,有以下几种情况:
1 对数组访问越界。
循环访问数组或下标变量会导致数组定义超出范围是很常见的。
对于 C 数组,当定义或分配 n 个元素的空间时,下标或指针移动只允许在 0 n-1 的范围内,超过这个范围就超出了界限,导致了不可预测的后果,其中之一就是无法读取内存。
2 访问或输出字符串时,没有赋值终止符 0
C 语言中的字符串运算以 0 结尾。
如果字符串没有指定终止符,则该函数将继续被访问,导致超出字符串定义的空间范围,并且无法读取内存提示。
3 指针铸造。
如果目标指针类型占用的空间多于指向该地址的原始指针,则新指针将用于访问该地址,这将导致边界被越过。
例如,如果定义了一个 10 字节的结构变量,然后将地址分配给一个 100 字节的结构指针类型,那么当您通过后者访问最后一个 90 字节范围时,这是一个越界操作,并且可能存在内存不可读错误。
-
#include
#define n 5
int main()
if(i!=m)printf("%5d",a[i]);
for(i = 0; i < n; i++)s--;
for(i = 0; i < s; i++)return 0;
可能有一些细节需要询问。 如果你发现有什么不对劲的地方,就说下一个...... 还有问题... 我会回来修改它。
-
我这边的执行似乎没有问题(结果肯定不对)。
您可以使用分步跟踪来查看它挂在哪条线上。
-
在首次执行 J++ 之前,您没有为 J 分配初始值。
-
在修理电脑时,我经常会遇到这种问题。
第一:【阅读修复工具】,修复,试试!
1。带有木马或病毒的游戏或软件! (防病毒,完全扫描和自定义扫描,重新启动后,隔离,完全删除)。
2。游戏或软件与其他游戏冲突! (类似的软件,彼此不兼容! 开始菜单、程序、卸载、只留下一个游戏)。
5。游戏或软件缺少必要的 dll 文件或肢体引线游戏补丁! (DLL文件,360系统急救箱,DLL文件恢复,添加恢复! 游戏补丁推荐请前往:官网**! )
6。游戏或软件带有差评插件! (您可以使用 360 Security Guard 或 Kingsoft Guard,或 Keniu Free Antivirus,扫描插件,并立即清理)。
8。游戏或软件存在错误或错误,或带有可疑的启动木马! (尝试:360系统急救箱,系统修复,全选,立即修复! 网络干扰修复,开始修复!
再次:开始急救! 重新启动后,单击“文件恢复区域”并全选以完全删除文件)!
9。没有了,开始菜单,运行,输入cmd,按回车键,在命令提示符下输入(复制它):
for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1
粘贴,按 Enter 键,然后键入:
for %1 in (%windir%\system32\*.dll) do /s %1
进入! 在屏幕滚动停止之前,请重新启动计算机!
10。它真的不起作用,恢复系统。
以上我都试过了,如果问题还是一样,那就是硬件问题,请使用排除法确定某件硬件有问题,并及时修复和更换。 谢谢!
-
你好! 电脑出现:【内存无法读写】,原因比较复杂,请开对药!
1。配置错误! 【重启,电脑品牌出来后,按F8,安全模式,上次正确配置,回车,回车】!
2。系统漏洞! 【360保安或金山卫士,或健牛免费杀毒,维修:高风险重要,其他忽略】!
3。软件冲突! 【卸载不常用软件,保持系统稳定,尤其是同类型软件,不兼容】!
4。软件版本已过时! [使用:(驱动器寿命),更新:显卡驱动程序,声音驱动程序! 其他软件,覆盖安装]!
5。病毒木马! 【杀毒软件,全盘隐藏扫描和自定义扫描,完成后,隔离,完全删除】!
6。差评插件! 【Keniu 免费杀毒软件、金山卫士、或 Talk Chain Hall 360 保安卫士、清理不良评论插件】!
7。可疑的初创公司! 【360系统急救包,启动急救,文件恢复区,完全删除文件】!
8。系统文件损坏! 【金山急救包】,扩展扫描,立即扫描,立即处理,重启电脑]!
10。指令修复方法! 开始菜单,运行,输入cmd,按回车键,在命令提示符下输入(复制就足够了):
for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1
粘贴,按回车键,完成滚动后,再次键入:
for %1 in (%windir%\system32\*.dll) do /s %1
进入! 在屏幕滚动停止之前,请重新启动计算机!
我给你7种调试方法,试试看:
1.如果电脑有木马或病毒干扰,**“360安防卫士”和“360杀毒双引擎版”,建议对病毒和木马进行“扫描”,修补电脑上的漏洞! >>>More