【发布时间】:2012-02-07 10:05:27
【问题描述】:
我只是尝试使用指向整数数组的 void 指针,我试图通过将数组转换回 int 来查看是否可以将数组打印回来。但它给了我一些随机价值。你能告诉我哪里出错了吗?
#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 ?
【问题讨论】:
-
您可以通过将换行符放入打印数字的格式字符串中来改进输出:
printf("%d\n", x);。 -
是的。我没有专注于格式化,因为我写这个是为了帮助自己测试另一个程序的这个功能。
标签: c pointers void-pointers pointer-arithmetic