반응형
포인터를 이해하는 데 중요함.
type identifier; //선언
type identifier = value; //정의
type = 변수형(float, char, etc)
identifier = {이름, 'a-z', 'A-Z' , '_', 숫자(단 숫자 시작은 안됨)}
포인터
프로세서가 주변 장치에 접근할 때 adress bus, data bus, control bus를 이용한다.
- & : 어떤 변수의 주소값을 반환해주는 연산자, promote operator, 차원을 높인다.
- * : pointer definition operator, promote 연산자(초기 정의할 때, 변수가 포인터 변수다), demote 연산자(변수에 저장된 주소의 값을 참조한다.), 차원을 높이거나 낮춘다.
포인터 변수는 변수로써 주소를 저장하는 것이다. &연산자를 이용하여 주소값을 반환하는 것과는 다르다.
- [] : 헤드에서 사용될 때(배열 지정 연산자), 포인터가 사용된다.
- a[n] : 원칙적으로 사용자가 지정한 만큼 스택에 데이터가 할당된다, 그러나 a가 가리키는 것은 데이터가 아닌 주소이다. (특이점), a와 &a는 서로 같은 값을 가지나 다르다.(차원이 다르다) a는 변수가 아닌 상수이다.
distance operation과 distance operation
- 주소와 주소는 더할 수 없다.
- address - address는 계산할 수 있고, step 단위(변수가 몇 개 들어갈 수 있는가?)이다.
- 주소와 수(step)는 더할 수 있으며, 단순하게 더한 값이 나오는 것이 아니라 ( 더한 값 * 자료형 바이트수 )를 더한 값이 나온다. -> ex) stepof(int*) == 4 (stepof(T) == sizeof(*T))
- 변수 : sizeof()
- 포인터(변수의 일종) : sizeof(), stepof()
- 어레이(constant point + 축을 가짐) : sizeof(), stepof(), axisof()
point-array equivalent : a[N] == *(a + N)
a[N] == *(a + N) == *(N + a) == N[a]
const의 위치에 따라서 의미가 달라진다.
- const type* name : *name이 const가 된다는 뜻이고 간접 참조로 값을 바꾸지 못하게 한다는 뜻
- type * const name : name이 const가 된다는 뜻이고 값인 주소를 바꾸지 못한다는 뜻 - 배열에 해당
- 그래서 둘 모두를 막으려면 const type* const name을 쓴다.
*** 중요 ***
- int *x[N] : 배열 연산자는 포인터 연산자보다 우선 순위가 높으므로 x는 int * 를 저장하는 length N의 배열이다.
- -> int*[N] x
- int (*x)[N] : 강제로 포인터를 우선으로 하므로 x는 Length가 N이고 int를 저장하는 배열을 참조하는 포인터이다.
- => (int[N])* x
배열과 포인터의 관계
*** type X[N] ***
X vs &X : X는 일차원, &X는 이차원, 배열의 특성상 값은 똑같으나 엄연히 다르다.
ex) X = 100, X+1 == 100 + type, but &X + 1 == 100 + type*N
***배열과 포인터는 엄연히 다르다. ex) sizeof(ARR) != sizeof(P = ARR)***
문자
컴퓨터는 문자를 모른다. ASCII 코드로 대응되는 수에 대해서 문자로 출력할 뿐이다.
A = 65 ~ Z = 96
a = 97 ~ z = 128
대문자, 소문자의 차이는 5번째 비트의 차이다.
입력과 출력의 가장 기본이 되는 함수는 fgetc(stdin), fputc(ch, stdout)이다.
알아두면 좋은 문자열 관련 함수
- strcpy(to, from)
- strcat
- strlen
- strcmp(s1, s2)
반응형
'VEDA 복습' 카테고리의 다른 글
VEDA 4일차 - C 프로그래밍 (0) | 2025.03.20 |
---|---|
VEDA 2일차 - C 프로그래밍 (0) | 2025.03.18 |
VEDA 1 일차 : C 프로그래밍 (0) | 2025.03.17 |