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);

そこの。printf他の sについても同様です。

に渡されるハードコードされた値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 に答える