我的程序不是通过指针算术打印数组

时间:2017-11-06 13:19:07

标签: c++ arrays pointers pointer-arithmetic

#include<iostream>
using namespace std;
int main()
{
    int a,count=0;
    cin>>a;
    int* arr;
    while(a)
    {
    int x= a%10;
    a=a/10;
    *(arr+count)=x;
    count++;
    }
    for(int i=0 ;i< count-1; i++)
    {
        cout<<*(arr+i);
    }
}
/* o/p :segementation error
// i/o :5*/

**带指针的数组

  

为什么会出现细分错误

在int数组中分区int **

  

分段错误

2 个答案:

答案 0 :(得分:3)

访问未初始化的值有未定义的行为(有例外,但没有一个适用于您的情况)。

arr未初始化:

int* arr;

此处使用arr的值:

*(arr+count)=x;

因此,程序的行为未定义。

答案 1 :(得分:-1)

#include<stdio.h>
int main()
{
    int a,count=0;
    int i;
    scanf("%d",&a);
    int* arr=&i;
    while(a)
    {
    int x= a%10;
    a=a/10;
    *(arr+count)=x;
    count++;
    }
    for(int i=0 ;i< count; i++)
    {
        printf("%d",*(arr+i));
    }
    return 0;
}

**是的,我们可以创建动态数组,这样可能不是一个好习惯,但真的有助于节省内存**