Собственно, есть функция (простейший пример), которая устанвливает значение переменной. Надо реализовать: если в функцию передается указатель на какой-либо тип, и если он не инициализирован -- выделить ему память и установить значение, если же передается адрес переменной -- просто установить значение. Проблема в том как это определить.
Нижеследующая программа, которая по-идее должна решать данную задачу, падает с ``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;
}
===
Похожие темы
- Форум valgrind не ловит явную ошибку? (2007)
- Форум ссылки и приведение типов (2010)
- Форум Глупый вопрос по С (2013)
- Форум Чем чревата прямая инкапусляция структур в си? (2016)
- Форум Выделение памяти, ошибка сегментирования (2013)
- Форум Зацените как GNU C умеет (2008)
- Форум pthread_create и прочий бред. (2004)
- Форум c99, передача указателей в функции (2010)
- Форум Тупняк и указатели 2 (2014)
- Форум Запутался с указателями. Си (2008)