В моей функции main()
инициализируйте указатель массива *AD
и скопируйте адрес массива A[5]
в указатель AD[5]
, используя для цикла. Когда я передаю этот указатель AD
для функции row1()
и присвойте все его значения (в AD) I[5]
Я получаю реальные значения A[5]
вместо адреса. С другой стороны, когда я печатаю значение указателя AD[5]
в main()
, я получаю адрес. Я использую компилятор DEV C++.Передача указателя массива функции в C
Почему в функции я получаю реальные значения?
#include <stdio.h>
int main(void)
{
int test;
int A[5];
int *AD[5];
FILE *fpc;
fpc=fopen("testing.txt","r");
fscanf(fpc,"%d",&test);
int i;
for(i=0;i<test;i++)
{
int j;
for(j=0;j<5;j++)
{
fscanf(fpc,"%d",&A[j]);
AD[j]=&A[j];
printf("%d ",AD[j]);
}
puts("");
row1(AD[0]);
}
}
void row1 (int AD[0])
{
int I[5];
int i;
for(i=0;i<5;i++)
{
I[i]=AD[i];
AD[i]=AD[i]+1;
printf("%d, ",I[i]);
}
puts("");
puts("");
puts("");
puts("");
}
Непонятно, чего вы пытаетесь достичь в строке функций1. –
В основном я хочу передать массив A [5] для функции row1 .. и я пытаюсь проверить, успешно ли он передан или нет, поэтому я использую printf («% d», I [i]), чтобы проверить ... Я получаю правильные значения A [5] в строке функций1, но проблема в том, что теоретически я должен получить АДРЕС А [5] в FUNCTION ROW1 .... – ibadia
ПРАВИЛЬНО: 'int A [5 ]; ... fscanf (fpc, "% d", &A[j]); '; INCORRECT:' AD [j] = &A[j]'; ЛУЧШЕ: 'AD = A; k = AD [j];' ... OR ... (если вы должны) 'AD = &A[j]; k = AD [0];' – FoggyDay