Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的指针数组+;“什么是”呢;总线错误“; #包括 #包括 #包括 使用名称空间std; int main() { int a[]={0,1,2,3}; int*r[]={NULL}; 对于(int i=0;i_C++_Arrays_Pointers - Fatal编程技术网

C++ C+中的指针数组+;“什么是”呢;总线错误“; #包括 #包括 #包括 使用名称空间std; int main() { int a[]={0,1,2,3}; int*r[]={NULL}; 对于(int i=0;i

C++ C+中的指针数组+;“什么是”呢;总线错误“; #包括 #包括 #包括 使用名称空间std; int main() { int a[]={0,1,2,3}; int*r[]={NULL}; 对于(int i=0;i,c++,arrays,pointers,C++,Arrays,Pointers,您的数组r中只有一个元素的空间,但您存储了4。这会覆盖内存,导致崩溃 更改此项: #include<cstdio> #include<string> #include<iostream> using namespace std; int main() { int a[]={0,1,2,3}; int *r[]={NULL}; for(int i=0;i<4;i++) {

您的数组
r
中只有一个元素的空间,但您存储了4。这会覆盖内存,导致崩溃

更改此项:

#include<cstdio>
#include<string>
#include<iostream>

using namespace std; 

int main()
{
        int a[]={0,1,2,3};
        int *r[]={NULL};

        for(int i=0;i<4;i++)
        {
                r[i]=&a[i];
                cout << &a[i] << endl;
                cout << a[i]<<endl;
        }

        for(int i=0;i<4;i++)
        {
                cout << r[i] << endl;
                cout << *r[i] << endl;
        }
        return 0;
}
致:


这使得
r
具有与
a
相同的元素数,换句话说是4。

int*r[]={NULL};
应该是
int*r[]={0,0,0,0};

这将为以下代码所需的四个指针分配空间


总线错误:

您没有为
r
分配足够的空间。请尝试
int*r[4];
,您将不会遇到分段错误


int*r[]={0}
它与
int*r[1]等价但是,在代码中,它只有一个元素。在Windows上运行它是幸运的,但它是一种未定义的行为。它可能在今天工作,在编译器上,但它不是合法的C或C++,也不能保证它下次运行程序时仍能工作。或者它没有覆盖本质。l即使是现在,您也没有遇到将要引起的问题。

2个单词-内存损坏..编写
NULL
而不是
0
的人(当他们真正想要整数零,而不是空指针时)都是可怕的人。问问Stephan T.Lavavej,他会告诉你战争故事。当我想要一个指针0时,我就写0,我只是不认为为指针设置特殊值有什么意义。创建一个社区wiki问题,比如“我正在写入数组边界之外的索引,为什么我的程序会崩溃/挂起/给出错误的结果?”,这样我们就可以将这些类型的问题标记为重复问题并指向它?@sashoalm,我肯定我们有一些。我搜索了,但没有找到任何问题。
int *r[]={NULL};
int *r[sizeof a / sizeof *a];