본문 바로가기

배열3

[C언어] * 연산자와 [ ] 연산자 : 포인터를 대상으로 사용할 수 있는 연산자 앞에서 말한 바와 같이 포인터 변수와 함께 배열명이 포인터로 사용된다. 단 그 둘의 차이점은 변수로 사용되느냐 상수로 사용되느냐였다. 보통 요소의 순서를 나타낼 때 사용하는 [ ]연산자, 포인터를 선언하거나 어떤 메모리에 접근할 때 사용하는 * 연산자로 익숙하지만, 우리가 알고 있는 포인터 외에 배열에서 배열의 이름으로 쓰이고 있는 배열명도 동일하게 포인터(어느 메모리를 가리킨다)로서 기능을 하기 때문에, 포인터나 배열명이나 둘 다 포인터를 피연산자로 하는 * 연산자와 [ ] 연산자를 사용할 수 있다. 다시 정리를 하자면, 포인터는 가리키고 있는 대상의 주소값을 가지고 있지만, 그 뿐 아니라 대상에 대한 (메모리에 접근하는 방식을 결정할) 자료형에 대한 정보까지 같이 가지고 있어야 포인터라고 할 수 있다. 2020. 8. 14.
[C 언어] 배열에 관해서: 배열명 =포인터 앞서 배열의 배열명이 상수 포인터라고 했다. 다시 반복하자면, 배열명은 그 배열의 첫번째 요소를 가리키고 있다.(주소값을 가짐) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main(void) { int arr[3] = {0, 1, 2}; printf("배열의 이름: %p \n", arr); printf("첫 번째 요소의 주소: %p \n", &arr[0]); printf("두 번째 요소의 주소: %p \n", &arr[1]); printf("세 번째 요소의 주소: %p \n", &arr[2]); return 0; } Colored by Color Scripter cs 를 실행시켜 얻은 실행결과는 다음과 같다. 실행결과에서 확인하게 되는 점. 1. 배.. 2020. 8. 10.
[C언어]포인터 VS 배열에 대하여: 변수 VS 상수 포인터와 포인터가 가리키는 변수를 선언해보자. int * ptr; int var; ptr = &var; 이렇게 프로그램을 실행시키면 포인터는 var를 가리키고 있게 된다. ptr ㅡ> var 배열을 선언해보자. int arr[10]; 이렇게 하면 이 배열의 이름인 arr는 10개의 요소로 구성된 배열의 첫번째 값(0번째 요소)의 주소값을 의미한다. 이는 arr이라는 배열의 이름이 arr 배열의 첫번째 값을 가리키고 있다. 따라서, arr이라는 배열명도 일종의 포인터이다. arr ㅡ> arr[0] 위의 ptr은 변수이기 때문에, ptr = &num와 같이 가리키는 값을 변수 var에서 변수 num으로 바꿀 수 있다. 그러나, arr은 오로지 배열의 처음인 요소만 가리킬 수 있다. 위의 ptr과 같이 arr.. 2020. 8. 10.