使用指向数组的空指针 [英] Using void pointer to an array

查看:87
本文介绍了使用指向数组的空指针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是试图使用指向整数数组的void指针,我试图查看是否可以通过将其强制转换为int来打印该数组.但这给了我一些随机的价值​​.你能告诉我我要去哪里了吗?

I was just trying to use a void pointer to an integer array ,I tried to see if i can print the array back by casting it back into int. But it is giving me some random value. Can you tell me where i am going wrong?

#include<stdio.h>
#include<stdlib.h>

int main(){
    int a[5];
    int x;
    int j;

    a[0]=1;
    a[1]=2;
    a[2]=3;
    a[3]=4;

    void *arr=a;

    for(j=0;j<4;j++){
        x = *(int *)(arr+j);
        printf("%d",x);
    }
    return 0;
}

输出是这样:

133554432131072512

为什么不固定数组a []的元素,即1,2,3,4?

Why is it not pinting elements of array a[] i.e 1,2,3,4 ?

推荐答案

在添加j之前,您需要强制转换arr .这是一个最小的解决方法:

You need to cast arr before adding j. Here is a minimal fix:

x = *(((int *)arr)+j);

但是我认为写起来更清楚

but I think it's clearer to write:

x = ((int *)arr)[j];

这篇关于使用指向数组的空指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆