自己開發

· C
포인터와 1차원 배열 포인터를 배열에 사용할 때 배열 이름은 배열의 시작 주소를 의미한다. int arr[4] = {1, 2, 3, 4}; int *p = arr; 가령 이렇게 배열과 포인터를 선언하고, printf("%x %x", p, &arr[0]); 배열 이름으로 초기화한 포인터 변수 p와 arr[0]의 주소, 즉 배열의 시작 주소를 출력하면 같은 값이 나오게 된다. 이는 결국 p + 0 또한 같다는 의미가 되어, &arr[0] == p == p+0 == arr 이 성립한다. 같은 주소라면 이것이 가리키는 값도 같다는 의미이다. arr[0] == *arr == *(arr + 0) == *p == *(p + 0) == p[0] 결론 &arr[0] == p == p+0 == arr arr[0] == *..
· C
2차원 배열의 포인터식 접근 (주소, 값의 표현) 1차원 배열에서 arr[i] 는 값을 의미했다. 포인터와 1차원 배열 [C] 포인터와 1차원 배열 포인터와 1차원 배열 포인터를 배열에 사용할 때 배열 이름은 배열의 시작 주소를 의미한다. int arr[4] = {1, 2, 3, 4}; int *p = arr; 가령 이렇게 배열과 포인터를 선언하고, printf("%x %x", p, &arr[0]); 배열 cho4u4o.tistory.com 2차원 배열이 1차원 배열과 다르다는 것을 이해할 때 가장 중요한 것은, 2차원 배열에서 arr[i] (== *(arr + i)) 는 값이 아닌 주소라는 점이다. 1차원 배열에서의 것과 다르기 때문에 헷갈릴 수 있어서 중요하다. 2차원 배열은 '열' 의 정보 뿐 아니..
· C
배열 포인터 배열 포인터는 열을 지정할 수 있는 포인터이다. 배열 포인터는 이렇게 생겼다. 자료형 : 배열 포인터 변수가 저장하는 배열의 자료형 배열 포인터 변수의 이름 : * 연산자와 배열 포인터 변수의 이름을 함께 괄호로 묶음 열의 길이 : 배열 포인터 변수가 가리키는 배열의 열의 길이를 지정 배열 포인터 변수의 사용 앞서 살펴본 2차원 배열의 포인터식 접근과 같다. 1차원 포인터 변수와 1차원 배열의 관계처럼 사용할 수 있다. int arr[2][3] = {10, 20, 30, 40, 50, 60}; int (*p)[3] = arr; // p = arr[0][0] printf("%x %x\n", &p[0][0], arr); printf("%d %d", p[0][1], *(*(p + 0) + 1));..
· C
값에 의한 호출과 주소에 의한 호출 포인터와 함수에 대해 다루기 전, 우리가 사용하던 함수의 모양을 다시 살펴보자. int odd_check (int x); void greeting (int x); 포인터와 함수에 대해 공부하기 전 사용하던 함수들은 매개변수로 값을 받을 때, 변수의 값을 복사해서 함수를 호출하였다. 이것이 값에 의한 호출이다. 값에 의한 호출 : 변수의 값을 복사하여 함수를 호출하는 방식 이런 값에 의한 호출 방법의 특징은, 값을 복사해서 함수를 호출하기 때문에 받아온 값을 함수에서 변형하여도, main 함수에 있는 원래의 변수의 값은 그대로라는 것이다. 아래 코드의 예시를 살펴보자. int func (int x, int y); int main () { int a = 10, b = 20..
· C
포인터란? 주소를 저장하는 '변수' 포인터 사용시 장점 메모리 주소를 참조하여 다양한 자료형 변수들의 접근과 조작이 용이함 메모리 주소를 참조하여 배열과 같은 연속된 데이터에 접근과 조작 용이 동적 할당된 메모리 영역에 접근과 조작 용이 포인터 변수의 선언과 사용 자료형 * 포인터 변수 이름 = NULL; (초기화) int *p1 = NULL; // int형 자료의 주소를 저장하는 포인터 변수 char *p2 = NULL; // char형 자료의 주소를 저장하는 포인터 변수 double *p3 = NULL; // double형 자료의 주소를 저장하는 포인터 변수 포인터에도 자료형이 있고, 그 자료형에 알맞는 값만 가리킬 수 있다 사용은 주소 연산자와 참조 연산자를 통해 이루어진다. 주소 연산자 (&) 와..
· C
문자열을 입력받는다고 하였을 때 나는 C에는 파이썬과 같은 것들이 없다고 생각해 반복문을 사용해서 배열[0] 에 문자 하나.. 배열[1] 에 문자 하나.. 이렇게 하곤 했었는데 찾아보니 C에도 문자열을 다룰 수 있는 방법이 있었다 ㅠ 문자열 변수의 선언과 초기화 변수를 사용함에 있어서 선언과 초기화는 굉장히 중요하다. C에는 파이썬처럼 문자열 자체를 하나의 자료형으로 지원하는 것은 없으나 문자열을 "문자배열" 로 나타내는 것이 가능하다고 한다. 따라서 C에서 문자열 변수 == 문자 배열 로 처리한다. 문자열 변수의 선언은 char형 배열의 선언과 같다. char string_name[size]; 크기를 지정한 문자 배열 다음과 같이 사용할 수 있다. char city[9] = "NEW YORK"; cha..
· Python
다음은 사촌동생 코딩학원 숙제를 도와주다가 만난 문제이다. 삼각형의 밑변의 길이와 높이를 입력 받아 넓이를 출력하고, "Continue?"에서 'Y'나 'y'를 입력하면 작업을 반복하고 다른 문자를 입력하면 종료하는 프로그램을 작성하시오. (넓이는 반올림하여 소수 첫째 자리까지 출력한다.) 아래 입출력 예시에서 키보드로 직접 치는 부분은 (입력)​으로 구분하였다.​ Width = 11 Height = 5 Triangle Area = 27.5 Continue? Y Width = 10 Height = 10 Triangle Area = 50.0 Continue? N 요런식으로 밑변과 높이를 입력받아서 넓이를 나타내주면 되는 문제였다. 반복문 속에 넣어둬야 똑같은 작업을 반복할 수 있으므로 무한 루프를 만들고,..
· C
모처럼 C언어 수업에 복귀하기 위해 교재를 찾아보며 배운 내용을 복기하고 있었는데 조건 연산자라는 개념이 눈에 띄었다. 조건 연산자 (삼항 연산자) 조건 연산자는 유일하게 3개의 피연산자를 가지는 삼항 연산자이다. 조건 ? 참일때: 거짓일때; max_value = (x > y) ? x : y; 위의 식에서 조건 (x > y) 가 참이면 x가 수식의 결과가 되고, (max_value == x 가 되고) 조건 (x > y) 가 거짓이면 y가 수식의 결과가 된다. (max_value == y 가 된다.) 조건식에 괄호는 없어도 되지만, 가독성을 위해서 추가한다. 조건 연산자의 활용 absolute_value = (x > 0) ? x: -x; // 절대값 계산 max_value = (x > y) ? x: y; ..
cho4u4o
'분류 전체보기' 카테고리의 글 목록 (2 Page)