社区
C语言
帖子详情
数组
painAndhappy
2005-06-08 03:54:49
#include <stdio.h>
main() {
char cChar[3];
cChar[0] = 'a';
cChar[1] = 'b';
cChar[2] = 'c';
cChar[3] = 'd';
cChar[4] = 'e';
cChar[5] = 'f';
cChar[6] = '\0';
printf("%s", cChar);
}
程序如上
问题如下
为何数组上限>= 3不会报错?
...全文
138
11
打赏
收藏
数组
#include main() { char cChar[3]; cChar[0] = 'a'; cChar[1] = 'b'; cChar[2] = 'c'; cChar[3] = 'd'; cChar[4] = 'e'; cChar[5] = 'f'; cChar[6] = '\0'; printf("%s", cChar); } 程序如上 问题如下 为何数组上限>= 3不会报错?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
foochow
2005-06-08
打赏
举报
回复
编译没错误,运行就挂了
painAndhappy
2005-06-08
打赏
举报
回复
谢谢各位!
sunman1982
2005-06-08
打赏
举报
回复
汗,这个问题实在是汗
zg351229063
2005-06-08
打赏
举报
回复
C语言没有数组越界检查.
但是最好别这么用.
zhaokugua
2005-06-08
打赏
举报
回复
编译时是不会报错的,只有在运行的时候才会出错(内存问题)
因为给下标大于2的(从3开始)的数组元素赋值时超出了系统分配的空间范围,
给这样的地址赋值会导致系统崩溃,因为它不属于系统给你分配的空间,本身
内容是无法预料的,改变它的内容更是无法预料的。
kunp
2005-06-08
打赏
举报
回复
一定会有问题,因为你已经往其他地址写数据了。
试一试下面的代码:
-----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char tChar[10]; //其他地址空间
char cChar[3];
cChar[0] = 'a';
cChar[1] = 'b';
cChar[2] = 'c';
cChar[3] = 'd';
cChar[4] = 'e';
cChar[5] = 'f';
cChar[6] = '1';
cChar[7] = '1';
cChar[8] = '1';
cChar[9] = '1';
cChar[10] = '1';
cChar[11] = '1';
cChar[12] = '1';
cChar[13] = '1';
cChar[14] = '1';
cChar[15] = '1';
cChar[16] = '1';
cChar[17] = '1';
cChar[18] = '\0';
printf("cChar: %x, %s\n", cChar, cChar); //打印变量地址和值
printf("tChar: %x, %s\n", tChar, tChar); //你会发现 tChar居然有值,对照一下cChar地址,你应该可以发现其中的奥秘
system("PAUSE");
return 0;
}
--------------------------------------------------------------------------------
在我机器上的运行结果是:
cChar: 22ff58, abcdef111111111111
tChar: 22ff68, 11
请按任意键继续. . .
flying_no_9
2005-06-08
打赏
举报
回复
你调一下试试了.
zhousqy
2005-06-08
打赏
举报
回复
运行会出错.
「已注销」
2005-06-08
打赏
举报
回复
#include <stdio.h>
main() {
char cChar[3];
cChar[0] = 'a';
cChar[1] = 'b';
cChar[2] = 'c';
cChar[3] = 'd';
cChar[4] = 'e';
cChar[5] = 'f';
cChar[6] = '\0';
printf("%s", cChar);
}
程序如上
问题如下
为何数组上限>= 3不会报错?
--------------------
一定报错。。。。。。晕。。看书把。。兄弟。。
ouye
2005-06-08
打赏
举报
回复
因为是连接在定义语句的后面,程序把这个看成了定义时候的初始化,就从新定义了这个数组
dophin1003
2005-06-08
打赏
举报
回复
你进行了非法的内存操作,如果会报错,就不存在内存溢出了。
就是不报错才危险啊,恩。
opencv灰度图像和二维
数组
相互转换操作
OpenCV实现灰度图像到二维
数组
,
数组
到图像的相互转换存取
Windows 批处理支持
数组
的插件库
Windows的批处理没有提供
数组
这个数据结构,所以自己手动编写了Bat相关的
数组
过程,方便在Bat中使用
数组
这个基本数据结构。表达式类似C语言的
数组
。
树状
数组
(详细分析+应用),看不懂打死我!
树状
数组
介绍 在学习一个算法之前一定要清楚它能干嘛,能解决什么样的问题,对你解题是否有帮助,然后才去学习它! 那么接下来看如下几个问题 什么是树状
数组
顾名思义就是一个结构为树形结构的
数组
,于二叉树的结构...
js
数组
删除(splice和delete)
今天用到了
数组
的删除,分别使用了splice和delete方法,记录一下,方便下次查找。原
数组
是一个关联
数组
,如var test=[];test[1]={name:'1',age:1};test[2]={name:'2',age:2};test[4]={name:'3',age:3};console.log...
参数传递二维
数组
今天在论坛上有朋友提问:声明函数如下void function(int** pInt),意图是想参数传递一个二维
数组
。于是就定义了一个二维
数组
,比如 int[1][1],然后调用函数。结果如何?当然是失败了,编译器提示:cannot ...
C语言
70,026
社区成员
243,262
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章