본문 바로가기
  • 부자가 될 남자

프로그래밍/C22

[C언어] 배열은 주소값이다. d배열이 주소값이라니 이게 무슨 허무맹랑한 소리인가 싶을 수 있다. 물론, 배열 안에는 값들이 들어있는 것이 맞다. 그러나, 우리가 정의한 배열의 이름. 그 이름에는 주소값 지정되어있다. 이해가 되지 않아도 좋다. 아래의 설명을 보도록 하자. 우리가 int a[5] = {1,2,3,4,5}; 라고 배열 a를 정의 및 초기화 했다고 해보자. 이때, 배열 a를 하나의 방 관점으로 본다면, 배열 a의 각각의 인덱스(a[0], a[1], ... 과 같은 것)들은 배열 a 안의 또다른 방이라고 생각할 수 있다. 그러니까, 내가 말하고 싶은 바는 무엇이냐면 배열 a라는 것에도 주소가 있고, 그 배열 안의 인덱스들에도 따로 주소가 존재한다는 것이다. 그렇기에 배열의 이름은 주소값이다. 한가지 코드를 보며 이해해보도록.. 2023. 5. 18.
[C언어] 배열과 포인터 사이의 관계 int arr[3] = {1, 2, 3}; int *ptr = &arr;7 이때, *(arr + i) == arr[i] (같은 표현)이며, &arr== arr 배열의 첫번째 값의 주소와 동일 == &arr[0]라고 볼 수 있다 2023. 5. 16.
[C언어] 포인터 - 정의, 연산자, 선언, 상호관계성 포인터란? c언어에서 포인터란 주소값을 저장하는 변수이며, '포인터 변수' 라고도 부릅니다. char형 변수가 문자를 저장하고, int형 변수가 정수를 저장하는 것처럼 포인터는 주소값을 저장합니다. int n = 10; int *ptr = &n; printf("%d, %d", ptr, *ptr); 위의 코드에서, *prt = &n이라고 하여 마치 *ptr이라는 변수에 n의 주소값이 들어간 것처럼 보이나, 결과를 보면 알 수 있다시피, [*포인터_변수명 = 주소값]과 같이 포인터 변수를 초기화하더라도 포인터_변수명에는 특정 주소값이 들어가는 것이고, *포인터_변수명에는 특정 주소값내의 특정 값이 들어감을 알 수 있다. 포인터 연산자 C언어에서 포인터와 연관되어 사용되는 연산자는 다음과 같습니다. 1. 주소.. 2023. 5. 16.
[C언어] 배열 - 문자 vs 문자열 문자 문자는 배열에 넣지 않고, 변수에 넣어 보관이 가능하다. #include int main (void) { char c = 'a'; printf("%c\n", c); } 결과값으로 a가 출력된다. 문자열 반면, 문자열은 배열에 넣어 보관해야한다. #include int main (void) { char str[6] = "coding"; printf("%s", str); } 참고 C 언어에서 문자열을 배열에 저장할 때, 문자열의 길이에 대해 약간의 혼동이 있을 수 있습니다. 문자열의 길이가 n일 때, 배열을 n칸으로 만들어도 문제가 없을 수 있지만, 이는 문자열이 반드시 NULL 종료 문자('\0')를 포함한다는 가정하에 성립합니다. C 언어에서 문자열은 문자들의 배열로 표현됩니다. 문자열의 끝을 나타.. 2023. 5. 16.