【发布时间】:2018-10-29 11:18:46
【问题描述】:
我尝试了很多不同的方法,也看过很多不同的文章来做到这一点,但我无法让它发挥作用。我试过 malloc 方法。我正在尝试将各种数据类型分配到一个 void 指针数组中并打印一个随机选择的值。
#include <stdio.h>
#define LENGTH 4
void main()
{
int a = 3;
float b = 2.5;
char c = 'H';
int d = 421;
char e = 'a';
void *array;
array[LENGTH];
array[0] = &a;
array[1] = &b;
array[2] = &c;
array[3] = &d;
array[4] = &e;
printf("%p \n", array[rand() % LENGTH]);
}
【问题讨论】:
-
如果您使用的是 GCC,请将
-pedantic-errors添加到您的命令行中。 -
你需要指针数组
void *array[LENGTH ];和#define LENGTH 4应该是#define LENGTH 5 -
array此处未分配。您刚刚将它定义为堆栈上的指针,它将指向任何地方(因为堆栈变量不会自动初始化,除非您指定它)。array[LENGTH];行根本不做任何事情。以下行现在只写入数组点指向的任何位置。最后一行看起来是正确的,但是在此之前您可能已经损坏了一些内存或导致内存写入冲突。
标签: c arrays pointers printing