Byz*_*ian 2 c++ arrays indexing
首先,我是C++编程的初学者.昨天我遇到了一些比较奇怪的事情.我试图通过指向它的指针来确定数组的长度.由于sizeof不起作用,我做了一点谷歌搜索,最后在这个网站上我找到了答案,这是不可能的.相反,我应该在数组的最后一个索引处放置一个超出值的值,并递增计数器,直到达到此索引.因为我不想覆盖最后一个索引中包含的信息,所以我尝试将最后一个索引放在一个索引之后.我预计它会失败,但由于某种原因它没有.
我以为我在其他地方犯了一个错误,那个数组比我指定的更长,所以我做了以下测试:
int a[4];
a[20] = 42;
std::cout << a[20];
Run Code Online (Sandbox Code Playgroud)
输出为42,没有任何错误.为什么这样做?这根本不应该有效,对吧?更有趣的是,这适用于任何基本类型数组.但是,一旦我使用std :: string,程序立即存在1.
有任何想法吗?
您的系统恰好没有使用刚刚20 * sizeof(int)
从阵列地址开始的字节的内存.(从一开始.)或者记忆属于你的过程,因此你可以搞砸它,或者为自己打破一些东西,或者只是通过幸运巧合打破一切.
底线,不要那样做:)
归档时间: |
|
查看次数: |
1254 次 |
最近记录: |