У меня есть функция f1
, которая ожидает указатель на пустоту. От вызывающего я хочу иметь общую логику передачи указателя void на A
, который внутренне изменяет указатель.void pointer как аргумент в функции
образец кода наклеивается ниже:
#include "stdio.h"
#include "malloc.h"
void f1(void* a)
{
printf("f(a) address = %p \n",a);
a = (void*)(int*)malloc(sizeof(int));
printf("a address = %p \n",a);
*(int*)a = 3;
printf("data = %d\n",*(int*)a);
}
void f(void)
{
void* a1=NULL;
printf("a1 address = %p \n",a1);
f1(a1);
printf("a1 address = %p \n",a1);
printf("Data.a1 = %d\n",*(int*)a1);
}
int main()
{
f();
}
Но это вызывает ошибку сегментации. Есть ли способ заставить его работать без изменения прототипа функции f1
?
Я видел людей, литых 'void *' на что-нибудь вроде 'int *' или 'float *' для возвращаемого значения 'malloc()', но вы ... 'void *' -> 'int *' - > 'void *'? Зачем? –
'malloc.h' ....? – alk
whhyyyyyyyy это так много? Это просто еще один вопрос «Я не стал искать, что означает« пропуск по значению »... –