社区
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不会报错?
...全文
135
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实现灰度图像到二维
数组
,
数组
到图像的相互转换存取
java如何向
数组
里添加元素
java篇 哇,菜鸟第一次写这个东西,当加深印象,大佬们请略过,欢迎有错指出。 向
数组
里添加一个元素怎么添加,这儿总结有三种方法: 1、一般
数组
是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。 但有个可以改变大小的
数组
为ArrayList,即可以定义一个ArrayList
数组
,然后用add(element)方法往里添加元素即可,还可add(index,element)往指...
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(test)长度为5的关联
数组
,现在开始删除。1.splice方法test.splice(2
C语言的
数组
定义方式
C语言的
数组
定义方式c语言
数组
定义方式1、一维
数组
2、一维
数组
初始化3、一维
数组
元素的引用
数组
是存储数据的结构。由于单个变量所能存储的数据很有限,所以有了
数组
存储结构。不仅如此,
数组
和指针是相辅相成的,学习
数组
可以为学习指针打下基础。 注意:同一
数组
中存储的数必须满足以下两个条件: 这些数的类型必须相同。 这些数在内存中必须是连续存储的。 换句话说,
数组
是在内存中连续存储的具有相同类型的一组数据的集合。 c语言
数组
定义方式 1、一维
数组
通常一维
数组
的定义方法为: 类型说明符
数组
名[常量表达式]; 例
es6 删除
数组
指定元素
arr.splice(arr.findIndex(item => item.id === id), 1) //item 只是参数可以写成 i 或者 v 都可以 , //后面的额id是
数组
的id,是不能随便写的,如果你
数组
里面写的是id,这里就写id,如果
数组
里面写的是num,那这里就写num , //=== 后面的id是你想要删除的元素的id号,同理,如果你
数组
里面写的是num,那这里...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章