我的程序不按指针算术打印数组

My Program not printing array by pointer arithmatic

本文关键字:打印 数组 指针 程序 我的      更新时间:2023-10-16
#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 进行分区 **

分段错误

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

arr未初始化:

int* arr;

此处使用 arr 的值:

*(arr+count)=x;

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

#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;
}
**

是的,我们可以像这样创建动态数组可能不是一个好的做法,但确实有助于节省内存**