// test.txt
50
13
124
–
void hi ( int *b, FILE *pfile ) {
rewind ( pfile );
int i;
for( i = 0 ; i < 3 ; i++ ) {
fscanf ( pfile, "%d", &b[i] );
}
}
int main ( void ) {
FILE *fp = fopen ( "test.txt", "r" );
int a[10]; //putting extra size for test.
hi ( &a[0], fp );
printf("%d,%d,%d\n", a[0], a[1], a[2]);
fclose ( fp );
return 0;
}
我正在尝试理解涉及阵列的指针.当我测试上面的代码时,我注意到通过将hi(& a [0],fp)等不同的索引值设置为hi(& a [1],fp),我得到了不同的结果.
// [hi(& a [0],fp)] // [hi(& a [1],fp)]的结果
50,13,124垃圾#,50,13.
我对结果感到很困惑,因为在’hi’函数中我从i = 0指定数组的开始,这意味着它存储从[0]开始的值.但似乎将1而不是0放在一边是以某种方式将值放在一边.为什么会这样?