У меня проблема с использованием указателей в цикле for
. В моем инициализаторе цикла for
я разыменовываю указатель int
и присваиваю ему значение "0". Когда я использую этот разыменованный указатель в цикле, я получаю ошибку сегментации, и я не понимаю, почему. Я использую Code :: Blocks и компилятор C GNU GCC.
Глядя в окно наблюдения, я вижу, что во время цикла
for
переменная имеет случайное число.Похоже, что разыменованный указатель теряет область видимости во время цикла
for
.
Код:
#include <stdio.h>
int main(void)
{
int val = 0;
int *p = NULL;
int answer = 0;
p = &val;
*p = 1; // This dereferences and sets to one successfully
for (int i=3, (*p)=0 ; i>=0; i--) // Here *p is a random number
{
printf("do stuff");
(*p) += 1; // Here it causes a segmentation fault
}
answer = *p;
}
Я думал, что не будет проблем с использованием указателя, как я.