c언어 메모,정리 배열,포인터 -3일차 두번째
헬로우 월드;
책을 보고 제가 이해한걸 토대로 작성하기 때문에 틀린 점 발견 시 지적하셔도 됩니당.
책 보고도 틀리면 노답이긴한데 ㅋㅋㅋ;;
포인터로 배열주소 저장하여 사용하기
배열은 사용할 메모리 그룹의 시작 위치를 기준으로 색인 작업된 요소의 위치를 계산하여 사용
char형으로 선언한 data 배열의 3번째 요소 (data[2])를 sum변수에 10번 더하는 코드
char data[5] {1,2,3,4,5};
int i, sum = 0, select = 2; //sum 변수에 data[select]값을 10번 더함,datap[2]요소 값을 10번 더하는 것과 같음.
for(i = 0; i < 10; i++) sum = sum + data[select]; //data[select]는 select가 2이므로 data[2]
포인터를 사용하면 더 효율이 좋다.
char data[5] {1,2,3,4,5};
int i, sum = 0, select = 2;
char *p = data + select; //data + select == &data[select];
for(i = 0; i < 10; i++) sum = sum + *p;
for문으로 잠깐 다시 이해해보면
for(i = 0; i < 5; i++){
result = result + *p; //포인터 변수 p가 가리키는 대상의 값을 result에 합산
p++; //data 배열의 다음 항목으로 주소를 이동:data[0] -> data[1] ...data[5]까지
이거 이해하면 이건건 끝인듯 세 번째로...