배열 vs 포인터 형식에 관한 차이인데요...
은별
char * m3=abcd;와 char [] m3=abcd
두 선언이 모두 m3가 지정된 문자열을 가리키는 포인터인건 알겠습니다. 그런데 형식에 있어서 무슨 차이가 있을까요? 즉, 포인터 형식으로 선언한 문자열 상수랑 배열형식으로 선언한 문자열이 각 메모리 영역에 올라가는 시점에 대해서 궁금합니다..질문 내용 : 책에나온말이
배열 형식에서는 5개(널문자 포함)의 원소를 가진 배열을 컴퓨터 메모리에 할당합니다.
각각의 원소는 대응하는 문자로 초기화 됩니다.
일반적으로 , 큰 따옴표로 둘러싸인 문자열은 실행 파일의 일부인 데이터 세그먼트에 저장됩니다.
프로그램이 메모리에 적재 될때 그 문자열도 함께 적재 됩니다
이때 큰 따옴표로 둘러싸인 문자열은 정적 메모리에 있다고 말합니다.
그러나 그 배열을 위한 메모리 할당은 프로그램의 실행이 시작된 후에 이루어 진다.
그 시점에서 큰따옴표로 둘러싸인 문자열이 그 배열에 복사된다.
그때 부터 컴파일러는 이름 m3를 첫번째 배열원소의 &m3[0]의 동의어로 인식한다.
이렇게 나와있습니다.
궁금한것이요..
첫번째 :문자열은 실행파일의 일부인 데이터 세그먼트에 저장된다는 말이 컴파일하고 링커가 실행파일 만들고 난 후를 뜻하는 말인가요?? 아니면 실행파일을 실행하고 나서인가요?/
두번째 : 프로그램이 메모리에 적재 될때 문자열도 함께 적재된다는 말은 실행파일을 실행시켰을때를 말하는 건가요?
세번째 : 문자열은 정적메모리에 있다는 말이 데이터 영역에 있다는 말로 알고있는데요.. 이것 또한 실행파일을 실행했을때를 말하는 건가요? 아니면 컴파일과정 끝나고를 말하는 건지?ㅠㅠ
네번째 : 배열을 위한 메모리 할당은 프로그램의 실행이 시작된 후에 이루어 진다는말은 컴파일 타임에 배열의 크기만 할당되고 실행하면 할당된 메모리 공간에 값이 들어간다는 것인가요??
공부하는 학생인지라... 많은 도움 바랄께요...ㅠㅠ