В основной функции у вас есть указатель на целое число, a
.Затем вы передаете адрес этого указателя на myfunc
, но myfunc
ожидает указатель на int, а не указатель на указатель на int.Вам нужно изменить свой звонок на myfunc
на это:
myfunc(a);
Но у вас также есть проблема внутри myfunc
.Вам не нужно разыменовывать a[i]
, так как это индексирует в массив a
.Это (эффективно) одно и то же:
a[i]
и
*(a+i)
(я думаю, что это не 100%, потому что в C указатели и массивы не полностью совпадаютчто-то, поэтому некоторые опытные программисты на Си могут меня поправить)
Вы, вероятно, просто немного запутались из-за набора синтаксиса вокруг указателей и массивов:
&a
*a
a[i]
*(a+i)
Первый - этоадрес a
, второй разыменовывается a
как указатель, третий - индекс в массиве, а четвертый - разыменование a
как указатель со смещением.
Вы бы хотели толькосделайте это *(a[i])
, если у вас есть массив указателей, а не указатель на int.