0
포인터를 사용하여 배열에서 가장 높은 값의 색인을 찾아서 인쇄해야합니다. 교수님은 아래에 정의 된 정수 만 사용하실 수 있다고 말씀하셨습니다 (카운터 또는 기타 귀중품 제외).C에서 포인터를 사용하여 배열에서 최대 값의 색인을 찾는 방법/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int array[100], size, *MAX, *pi;
srand(time(NULL));
MAX = array;
printf("Insert array size:\n");
scanf("%d", &size);
for(pi=array; pi<array+size; pi++)
{
*pi = (rand()%100) + 1;
}
printf("\nArray elements:\n");
for(pi=array; pi<array+size; pi++)
printf("%d\t", *pi);
for(pi=array+1; pi<array+size; pi++)
if(*pi>*MAX)
{
MAX = pi;
}
printf("\n\nMax is %d.", *MAX);
}
새로운 최대 값을 기록하는 동시에 새로운 최대 값의 포인터 *를 기록합니다. 그러면 그것의 인덱스는'pimax-niz' 포인터를 빼는 것입니다. 하지만 불행히도'niz '는 코드에서 알 수 없습니다. –
MAX는 배열의 최대 값을 가리키며 배열의 시작 부분에 대한 포인터를 가지고 있으며 메모리는 연속적이므로 배열 포인터에서 MAX 포인터를 뺀 바이트를 얻고 저장된 데이터 유형의 크기로 나눕니다 : (MAX- 배열)/sizeof (int) – Iverelo
@Iverelo는 크기로 나누지 않습니다. 포인터 연산이 당신을 대신해 처리합니다. 첫 번째 주석 'MAX'의 죄송 합니다만 이미 값이 아닌 최대 요소에 대한 포인터입니다. 그래서 그것의 인덱스는'MAX - array'이지만'niz'는 정의되지 않았습니다. –