| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2213 人关注过本帖
标题:关于 char * 指针数组的问题
取消只看楼主 加入收藏
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
关于 char * 指针数组的问题
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    char *arr = (char *)malloc(sizeof(char) * 2);
    for(int i = 0; i < 10; i++) {
        arr[i] = 65 + i;
    }
    printf("%s", arr);
}


问题是在写堆串的时候突然发现的,之前从来没注意过,也没有特意去越界
第一句明明只是赋予了 char *arr 2 个空间
然而实际插入了不止是 2 个,而是 10 个,但是居然能够成功输出 ABCDEFGHIJ
把 char 换成了 int, 也可以成功输出
图片附件: 游客没有浏览图片的权限,请 登录注册

这样做明显占用了本不应该是自己的空间,但是为什么没有报出数组越界的错误,而是可以成功通过编译
另外,实际编程中,是否支持这样去做?也就是说本来应该 int *a = new int[10],实际上只需要 int *a = new int 就可以了(申请空间用 C++ 的 new 暂时代替)

之后我在想是否可以通过 char ** 不限制空间去模拟一个简单 vim,但是 char ** 的第一个指针如果越界是会报错的

有没有大神解释一下原理
搜索更多相关主题的帖子: char 指针 数组 int 空间 
2018-02-03 20:07
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:0 
回复 2楼 lulipro
看来很多基础知识还是需要夯实的
2018-02-04 19:18
快速回复:关于 char * 指针数组的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020926 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved