언어는 과-학인가요?/c언어

(c언어) 배열과 포인터

이원자 탄소 2020. 9. 12. 12:39
728x90

배열은 포인터 개념으로 사용할 수 있다

 

int student[5] = {4,3,3,1,0}

#include <stdio.h>

int main() {
	
	int arr[3] = { 0,1,2 };

	printf("배열의 이름: [%p]\n", arr);
	printf("배열의 이름: [%p]\n", &arr);
	printf("첫 번째 요소: [%p]\n", &arr[0]);
	printf("두 번째 요소: [%p]\n", &arr[1]);
	printf("세 번째 요소: [%p]\n", &arr[2]);

	printf("-----------------------------\n");

	printf("배열의 이름: [%p]\n", arr);
	printf("첫 번째 요소: [%d]\n", arr[0]);
	printf("두 번째 요소: [%d]\n", arr[1]);
	printf("세 번째 요소: [%d]\n", arr[2]);

	printf("-----------------------------\n");

	printf("배열의 이름: [%d]\n", *arr);
	printf("첫 번째 요소: [%d]\n", *(arr + 0));
	printf("두 번째 요소: [%d]\n", *(arr + 1));
	printf("세 번째 요소: [%d]\n", *(arr + 2));
}

1. arr이름만 적어주면 배열의 첫번째 위치를 가르킨다

2. arr[n]은 *(arr + n) 으로 나타낼 수 있다 (둘이 같은거임)

3. arr은 포인트라 포인트 선언 안하고 *붙여서 바로 사용가능하다

4. arr이나 &arr[0] 이나 &arr이나 나 똑같은거다 

 

#include <stdio.h>

int main() {

	int arr1[3] = { 1,2,3 };
	double arr2[3] = { 1.1, 2.2 ,3.3 };


	printf("*arr1 배열의 이름: [%d]\n", *arr1);
	printf("*arr2 배열의 이름: [%g]\n", *arr2);

	*arr1 += 100;
	*arr2 += 120.5;
	printf("*arr1 배열의 첫 번째 요소: [%d]\n", arr1[0]);
	printf("*arr2 배열의 두 번째 요소: [%g]\n", arr2[0]);

}

arr1 배열에 값을 더해서 집어넣는 모습이다 (첫번째 배열에 값은 넣었다)

 

728x90