반응형
배열(Array)
p.246
int grade[100];
이라는 배열이 있다고 하자. 이때 주소값은 0x100이라고 하면 grade[1]의 주소갑은 0x104이다. int가 4byte이기 때문이다.
char grade[] = "HANYANG";
이라는 배열은 문자열의 각각의 문자를 각 문자 배열 안에 넣는 것이다. 따라서 grade[0]에는 'H'가, grade[1]에는 'A'가 들어있다. 주소값을 참조할 때는 &를 쓴다. grade의 주소값을 0x100이라 한다면 &grade[0]는 0x100이다.
# Array space
32bit로는 4GB밖에 쓰지 못하기 때문에 64bit 운영체제가 나왔다.
Pointer
p.248
char *p = grade;
p++;
배열은 상수(constant)이지만 포인터는 변수(variable)이다.
따라서 포인터 p에 ++연산자를 쓸 수 있다.
일반적으로 포인터 타입과 데이터 타입은 다르다.
p = 100;
이러면 유효하지 않은 스테이트먼트이다.
p = (int *)100;
이런 식으로 타입 캐스팅을 해주어야 한다.
int *p = (int *)malloc(sizeof(int)*10);
다음과 같은 방식으로 int의 사이즈 x 10만큼의 메모리를 할당받을 수 있다.
이것은 힙 영역에 할당된다.
*p++는 ++가 우선순위가 높아서 p[1]과 같다.
return을 두개 이상 하고 싶으면 call-by-reference를 사용한다.
pointer을 쓰면 함수 호출을 할 때 parameter 복사를 안하기 때문에 효율적이다.
parameter에 자료들을 한번에 묶어서 보내주는 것에 배열을 사용한다.
만약 타입이 다르다면 struct를 사용한다.
728x90
반응형