C++ 指向数组的指针

C++ 指向数组的指针,c++,arrays,pointers,C++,Arrays,Pointers,最近,我一直在努力加强我的指针技能,我遇到了以下问题: 我有下面的一段代码,但是我遇到了一个运行时错误。我试图查找一些关于遍历表示数组的指针的内容,但什么也找不到 有人能帮我找到问题吗 #include <bits/stdc++.h> using namespace std; int main() { int * arr; arr[0]=1; arr[1]=2; for (int g=0; g<2; g++) cout << ar

最近,我一直在努力加强我的指针技能,我遇到了以下问题:

我有下面的一段代码,但是我遇到了一个运行时错误。我试图查找一些关于遍历表示数组的指针的内容,但什么也找不到

有人能帮我找到问题吗

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int * arr; 
    arr[0]=1; 
    arr[1]=2;
    for (int g=0; g<2; g++) cout << arr[g] << '\n';
}
#包括
使用名称空间std;
int main()
{
int*arr;
arr[0]=1;
arr[1]=2;

对于(int g=0;g您实际上没有为数组声明任何存储,arr也没有实际指向数组的第一个元素(取消引用是未定义的行为)


您缺少以下内容:

int solve[2];
int * arr = solve;


这两种方法都会将作用域内正确分配的存储地址分配给
arr
,取消引用是一种已定义的行为。

您实际上没有为数组声明任何存储,arr也没有实际指向数组的第一个元素(取消引用是未定义的行为)


您缺少以下内容:

int solve[2];
int * arr = solve;


这两种方法都会将作用域内正确分配的存储地址分配给
arr
,取消引用是一种已定义的行为。

您实际上没有为数组声明任何存储,arr也没有实际指向数组的第一个元素(取消引用是未定义的行为)


您缺少以下内容:

int solve[2];
int * arr = solve;


这两种方法都会将作用域内正确分配的存储地址分配给
arr
,取消引用是一种已定义的行为。

您实际上没有为数组声明任何存储,arr也没有实际指向数组的第一个元素(取消引用是未定义的行为)


您缺少以下内容:

int solve[2];
int * arr = solve;


这两种方法都会将作用域内正确分配的存储器的地址分配给
arr
,而取消对它的引用是定义的行为。

那么,我该如何更改它?@πάνταῥεῖ 他的一个是完全有效的Too是完全有效的,但是添加索引0没有真正的意义…所有这一切将要做的就是将
int
长度的0倍添加到地址,即添加零…imo
int*arr=&solve[0];
更清晰;它明确显示您正在将指针设置为指向数组中的第一个元素。那么,我该如何更改它?@πάνταῥεῖ 他的一个是完全有效的Too是完全有效的,但是添加索引0没有真正的意义…所有这一切将要做的就是将
int
长度的0倍添加到地址,即添加零…imo
int*arr=&solve[0];
更清晰;它明确显示您正在将指针设置为指向数组中的第一个元素。那么,我该如何更改它?@πάνταῥεῖ 他的一个是完全有效的Too是完全有效的,但是添加索引0没有真正的意义…所有这一切将要做的就是将
int
长度的0倍添加到地址,即添加零…imo
int*arr=&solve[0];
更清晰;它明确显示您正在将指针设置为指向数组中的第一个元素。那么,我该如何更改它?@πάνταῥεῖ 他的一个是完全有效的,Too是完全有效的,但添加索引0实际上没有意义……所有这一切只需将
int
长度的0倍添加到地址,即添加零……imo
int*arr=&solve[0];
更清晰;它明确地表明您正在将指针设置为指向数组中的第一个元素。