왜 내 코드가 작동하지 않습니까?포인터를 사용하여 배열을 탐색하는 방법은 무엇입니까?
#include <stdio.h>
int main()
{
int test[] = { 3, 9, 7 };
printf("%d", find(test, 3));
return 0;
}
int find (int array[], int size)
{
int i, largest, where;
largest = array [0];
for (i=0; i<size; ++i) {
if (array[i]>largest) {
largest = array[i];
where = i;
}
}
return (int) *(&array+sizeof(int)*where);
}
은 내가 대체 할 수 알고 :
return array[where];
하지만이 운동의 요점되지 않습니다 :
return (int) *(&array+sizeof(int)*where);
와 함께.
그래서 배열은 기본적으로 & array [0]입니까? 왜 당신은 단지 어디에 추가합니까? sizeof (int) *를 어디에 추가해야하지 않습니까? – user2258753
신경 쓰지 마십시오. 마이크는 설명했다. – user2258753
@ user2258753,'sizeof (int)'는 불필요합니다 - 포인터 산술은 이미 뾰족한 유형의 크기에 의한 암시적인 곱셈을 포함합니다. 'array'는 배열이 아니고 포인터이기 때문에'array'는 * NOT *'& array [0]'입니다. * * 배열 인 경우 대부분의 경우 배열의 이름이 첫 번째 요소에 대한 포인터로 감소합니다. –