我需要帮助,了解如何将变量的地址与整数进行比较。 //或者将指针与整数进行比较//比较变量的整数和地址
需要程序应该有一个带有初始化值的数组。程序应该显示值的值和地址。然后程序要求用户输入用户想要改变的值的地址。我想显示一个错误消息,如“无效的输入!”当程序检测到输入的地址不在可用地址中时。
样本输出应该是:
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