:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
마속 나무위키 문서 2.3. 가정의 패전 인용"그런데 여기서 마속은 제갈량의 명령을 무시하고 길목에 세워야 할 방어진지를 산 꼭대기에 세우는, 전쟁사상 다시 없을 바보짓을 한다.부장 왕평이 필사적으로 말렸지만 이마저도 무시해버린다."
06/11/12 22:40
둘 다 내부적으로는 차이가 없습니다.. 메모리에 8bit(char의 크기)*13 의 크기만큼 메모리를 연속적으로 잡아놓고 거기에 Hong Gil Dong 을 집어 넣어 놓거든요.. 1번처럼 선언하고 name[1]을 출력해도 o 가 나오고 2번처럼 선언하고 *(hong+1) 을 출력해도 o 가 출력됩니다.. 1번처럼 하는 이유는 배열의 크기를 동적으로 잡고 싶을때(즉, 프로그램을 실행하면서 입력값에 따라 배열의 크기를 다르게 한다던지 하고 싶을때..) char *name; 이라고만 선언해 둔 후 malloc() 함수를 이용해서 동적으로 메모리를 할당받으면 그 이후로는 배열 쓰듯이 쓸 수 있습니다.
06/11/12 23:32
내부적으로 차이 있습니다.
char *name = "Hong Gil Dong" 로 할 경우 프로그램이 올라가는 메모리의 데이터 영역에 "Hong Gil Dong" 이 들어가고 이 데이터는 읽기전용이 됩니다. (수정할 수 없습니다.) char name[10] = "Hong Gil Dong" 으로 하면 스택 영역에 11바이트를 할당해서 저걸 저장합니다. 스택에 있는 내용이므로 수정 가능합니다.
06/11/13 17:26
그리고 덧 붙이자면
처음것은 name의 size = 14가 되겠죠...뒤에 널 포함해서요... 그리고 뒤에것은 size 10바이트죠... 10개배열인데 11바이트면 안되죠... char name[10]하면 쓸수 있는 배열인자는 [0]~[9]까지 입니다. [10]은 못쓰는겁니다. 그리고 뒤에것은 운 좋으면 홍길동 이상없이 다 저장되지만 만에 하나 그 뒤에 뭔데이터가 있다면 그 데이터 깨지죠...
|