Z tego co zrozumiałem, przekazuję adres zmiennej a
do funkcji int ffx1
.Co to jest "p = (int [2]) {* p};" linia w punkcie C?
Po tym, co dokładnie oznacza ta linia p = (int[2]){*p};
?
int ffx1(int * p)
{
p = (int[2]){*p};
return(p[1]);
}
int main()
{
int a = 1;
a = ffx1(&a);
printf("%d", a);
return 0;
}
'(int [2]) {* p}' jest dosłownym związkiem. 'p = (int [2]) {* p};' taki jak 'int array [2] = {* p, 0}; p = array; ' – BLUEPIXY
jeśli jest to dosłowny składający się na macierz, to nie określa wartości dla drugiego elementu tablicy, który jest zwracany, który mógłby być UB –
@AndyG Tak, jest, zobacz komentarz BLUEPIXY . –