Мне нужна помощь в том, как сравнить адрес переменной с целым числом. // или случай сравнения указателей с целыми числами. //Сравните целое число и адрес переменной
Необходимо, чтобы программа имела массив с инициализированными значениями. Программа должна отображать как значение, так и адрес значений. Затем программа просит пользователя ввести адрес значения, которое пользователь хочет изменить. Я хочу показать сообщение об ошибке, например «Invalid Input!» когда программа обнаруживает, что введенный адрес не входит в число доступных адресов.
вывод должен быть:
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
выглядит так: ваша строка: '* pVar = temp;' – wimh
Почему это? :) – Louie