0

我试图让我的程序使用指针和 malloc 将 Scanf 的结果存储到内存中,我希望 Scanf 只能接受整数,这是我的代码。当我打印结果时,它会返回一个随机数?

int main(void)
{

unsigned int *Source = malloc(10);
printf("Enter a Source Number: ");
scanf("%i",Source);
printf("%i\n",Source);
unsigned int *Destination = malloc(4);
printf("Enter a Destination Number: ");
scanf("%i",Destination);
printf("%i\n",Destination);
unsigned int *Type = malloc(4);
printf("Enter a Type Number: ");
scanf("%i",Type);
printf("%i\n",Type);
int *Port = malloc(4);
printf("Enter a Port Number: ");
scanf("%i",Port);
printf("%i\n",Port);
char *Data;
struct Packet *next;

return 0;
}

任何人都可以解释一下吗?

4

2 回答 2

3
printf("%i\n",Source);

是未定义的行为,%i转换需要一个int,但您传递的是一个int*. 但可能它会尝试将指针值(地址)打印为int. 你打算使用

printf("%i\n", *Source);

那里。其他printfs 也是如此。

传递给的硬编码值malloc并不是一个特别健壮的想法,最好malloc根据指针的大小,

unsigned int *Source = malloc(sizeof *Source);
于 2013-04-27T14:16:53.920 回答
0
unsigned int *Source = malloc(10);

源是一个指针。

printf("%i\n",Source);

这段代码是打印值的地址,打印值是这样的:

printf("%i\n",*Source);
于 2013-04-27T14:21:04.037 回答