Собственно, есть функция (простейший пример), которая устанвливает значение переменной. Надо реализовать: если в функцию передается указатель на какой-либо тип, и если он не инициализирован -- выделить ему память и установить значение, если же передается адрес переменной -- просто установить значение. Проблема в том как это определить.
Нижеследующая программа, которая по-идее должна решать данную задачу, падает с ``segmentation fault''. Где ошибка? Спасибо.
===
#include <stdio.h>
#include <stdlib.h>
void set(int *p, int value)
{
if(p == NULL) p = (int *)malloc(sizeof(int));
*p = value;
}
int main(void)
{
int *q1 = NULL;
int q2 = 0;
set(q1, 10);
set(&q2, 20);
printf("q1: %i\n", *q1);
printf("q2: %i\n", q2);
free(q1);
return 0;
}
===