我需要幫助,瞭解如何將變量的地址與整數進行比較。 //或者將指針與整數進行比較//比較變量的整數和地址
需要程序應該有一個帶有初始化值的數組。程序應該顯示值的值和地址。然後程序要求用戶輸入用戶想要改變的值的地址。我想顯示一個錯誤消息,如「無效的輸入!」當程序檢測到輸入的地址不在可用地址中時。
樣本輸出應該是:
data[1] = 11
data[2] = 22
data[3] = 33
data[4] = 44
address[1] = 2538816
address[2] = 2538820
address[3] = 2538824
address[4] = 2538828
enter address: 2538888
Invalid Input!
我已經創建的代碼,它的工作原理,但它給我一個警告,因爲我鑄造錯了(我知道鑄造是不適合我需要什麼)。 我唯一關注的是:
- 用戶從可用地址向int變量輸入一個地址。
- 用戶輸入的地址應與可用地址進行比較。 (這是問題)
- 如果輸入的地址是可用的地址之一,則用戶將改變存儲在用戶輸入的地址上的值。
- 如果沒有,程序應該顯示無效輸入!
也用於該程序的要求是,當「程序要求用戶輸入的地址。該地址被存儲在臨時int變量,然後複製到整數指針」。
main()
{
int var = 4, temp;
int data[5]={11, 22, 33, 44};
int* pVar;
pVar = &var;
char choice;
void display(int, int*);
while(1)
{
display(var,data);
while(1)
{
printf("\nEnter address: ");
scanf("%d", &temp);
int check=0;
for(int i=0; i<4; i++)
{
if((int*)temp==&data[i])
{
check=1;
break;
}
}
if(check==1)
{
*pVar = temp;
break;
}
else
{
printf("Invalid Input!\n");
}
}
printf("Enter integer: ");
scanf("%d", *pVar);
display(var,data);
while(1)
{
getchar();
printf("\n\nDo you want to restart? [Y] Yes or [N] No: ");
scanf("%c", &choice);
if(choice=='Y'||choice=='y'||choice=='N'||choice=='n')
{
break;
}
else
{
printf("Invalid Input!\n");
}
}
if(choice=='N'||choice=='n')
{
break;
}
}//endline13
system("PAUSE");
}
void display(int var, int data[4])
{
system("cls");
printf("Values---------------------------*\n\n");
printf("var = %d\n\n", var);
for(int i=0; i<4; i++)
{
printf("data[%i] = %i\n", i, data[i]);
}
printf("\nAddresses---------------------------*\n\n");
printf("Address of variable = %d\n\n", &var);
for(int i=0; i<4; i++)
{
printf("Address of data[%i] = %i\n", i, &data[i]);
}
}
這看起來應該被標記爲C,而不是C++。 – user657267 2014-11-01 12:06:43
看起來像這條線是你的問題:'* pVar = temp;' – wimh 2014-11-01 12:10:56
這是爲什麼? :) – Louie 2014-11-01 12:11:28