我试图让我的程序使用指针和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;
}
anoyone可以解释一下吗?
答案 0 :(得分:3)
printf("%i\n",Source);
是未定义的行为,%i
转换需要int
,但您传递的是int*
。但可能它会尝试将指针值(地址)打印为int
。你打算用
printf("%i\n", *Source);
那里。同样地,对于其他printf
s。
传递给malloc
的硬编码值并不是特别强大的想法,根据指针的大小更好malloc
,
unsigned int *Source = malloc(sizeof *Source);
答案 1 :(得分:0)
unsigned int *Source = malloc(10);
Source是一个指针。
printf("%i\n",Source);
此代码打印值的地址,printf值如下:
printf("%i\n",*Source);