1) 은 모두 0으로 초기화되고...
2) 는 확첫번째 원소만 0이 될것 같네요.
배열 초기화할 때 정해진 원소 갯수보다 적게 초기화하면 나머지는 0이 되는걸로 알고 있어요.
2번은 확실히는 모르겠군요.
gcc 4.3 에서는 1) 2) 둘다 모든 원소를 0으로 초기화 해주네요.
char 에서 0을 NULL 과 동일하게 사용함으로.. 모두 0으로 초기화 한다고 생각하겠지만,
배열에서 첫번째 요소라도 생성과 동시에 값을 주면 나머지는 초기화가 됩니다.
Local 변수일경우
Quote:
If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.
돌려보면 금방
돌려보면 금방 나올텐데.
1) 은 첫번째 요소를 0 나머지는 널, 2) 는 모두 널.
그럼 한가지
그럼 한가지 묻겠습니다. 널과 0 사이에 다른점이 뭘까요... ^^;;
1) 은 모두 0으로 초기화되고...
2) 는 확첫번째 원소만 0이 될것 같네요.
배열 초기화할 때 정해진 원소 갯수보다 적게 초기화하면 나머지는 0이 되는걸로 알고 있어요.
2번은 확실히는 모르겠군요.
gcc 4.3 에서는 1) 2) 둘다 모든 원소를 0으로 초기화 해주네요.
표준적으로 캐릭터
표준적으로 캐릭터 셋의 경우에 null character는 0으로 인코딩되므로 실질적인 값이나 동작은 같다고 보아야겠네요.
저는 개념적으로는 다른 것으로 생각하고 있습니다.
정확히 이야기하면
1)은 char 배열에 첫번째 원소를 0이라는 정수로 초기화 하고 나머지를 NULL 처리한 것이고,
2)은 char 배열에 첫번째 원소를 NULL이라는 캐릭터 값으로 초기화 하고 나머지를 NULL처리한 것입니다.
char 에서 0을 NULL 과 동일하게 사용함으로.. 모두 0으로 초기화 한다고 생각하겠지만,
실제 동작은 위와 같습니다.
확실한것은 0이 아닌 다른 값을 넣어보면 확실하게 알 수 있습니다.
첫번째 배열만 변경되고 나머진 0(NULL)로 초기화 되는 것을 볼 수 있을 것입니다.
null은 반드시 0이 되는건 아닙니다.
즐린
포인터 변수같은 걸 null로 초기화하면
null pointer가 들어갑니다.
즐린
....
배열에서 첫번째 요소라도 생성과 동시에 값을 주면 나머지는 초기화가 됩니다.
Local 변수일경우
Dig it.
Dig it.
댓글 달기