작성
·
325
0
int a[60], b[60]; 이것을
main() 함수에 집어넣으면 no 라고 나오고
ex)
int main() {
int a[70],b[70];
main()위에 전역함수?
ex)
int a[70],b[70];
int main(){
로 넣으면 yes로 나오는데 왜 그런건가요..
답변 2
0
0
선생님 답변 전에 알고 있는 거라도 말씀드리면..
말씀하신 두 개의 차이는 초기화 여부인 듯합니다.
main함수 위에 변수를 선언하게 되어버리면 전역변수가 되어서 0으로 초기화 됩니다.
그러나 main 함수 안에 변수를 선언하게 되면 지역변수가 되어서 초기화되지 않고 쓰레기값(설정치 않은 값)이 들어갈 수 있습니다.
이 차이 때문에 과정에서 오류가 발생한 것이 아닐까 합니다.
이것도 제가 알고 있는 불완전한 지식으로만이라도 말씀드리면...
우선 말씀해주신 두 가지에 대해 말씀 드리겠습니다.
1) 이것만 오류가 났다
A. 아마도 다른 경우에는 우연하게도 해당 배열에 제대로된 값이 들어갔을 경우가 높습니다. 이 이상으로는 제가 알고 있는 지식으로 답변을 드릴 수가 없어 죄송합니다.
2) 지역변수에서 초기화하려면 어떻게 해야 하나?
A. 배열 선언과 동시에 초기화를 하시면 될 듯합니다.
예를 들자면, int a[70] = {0, };
이라고 초기화를 하시면 정수형 배열 a 는 모두 0으로 초기화 됩니다.
배열은 선언과 동시에 일괄적으로 할당할 수 있습니다. 다만 배열을 선언한 다음에는 위처럼 일괄할당을 적용하지 못하는 것으로 알고 있습니다.
또, 배열을 선언과 동시에 할당할 경우 int a[70] = {1, } ; 라고 하면 첫번째 배열의 요소에 1이 들어가고 나머지 지정치 않은 공간은 0으로 자동 초기화가 이뤄집니다.
댓글 감사합니다 한가만 더 물어봐도 될까요?? 여태껏 main함수에서 변수 선언하는데 다 괜찮았는데 이것만 오류나서...
그럼 지역변수에서 초기화할려면 어떻게해야하나요??