我正在嘗試學習如何使用指標,并且我正在嘗試制作一個程式,該程式要求用戶輸入他們想要寫入的亂數的整數,然后將它們列印回用戶。通常我會為此使用一個陣列,但這違背了學習指標的全部目的。
#include <stdio.h>
#include <malloc.h>
int main() {
int numberAmount = 0;
int *numbers;
printf("Type the amount of numbers you are going to write: ");
scanf("%i", &numberAmount);
numbers = (int*) malloc(sizeof(numberAmount));
if (numberAmount == 0) {
printf("No numbers were given");
}
else {
for (int i = 0; i < numberAmount; i ) {
scanf("%i", numbers);
}
while (*numbers != 0) {
printf("%i ", *numbers);
numbers ;
}
}
return 0;
}
這是我到目前為止想出的,但它不起作用。
有任何想法嗎?
uj5u.com熱心網友回復:
在這部分代碼中
for (int i = 0; i < numberAmount; i ) {
scanf("%i", numbers);
}
您將用戶輸入的數字保存在同一記憶體位置。因此,numbers每當用戶輸入一個新整數而不是添加一個新整數時,保存在指標中的值就會不斷變化。
您可以通過替換scanf("%i", numbers);為來解決此問題scanf("%i", (numbers i));。這樣,對于用戶提供的每個新輸入,它都會保存在numbers.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346327.html
