혹시 이렇게 나오는 게 맞는 건가요?
혹시 이렇게 나오는 게 맞는 건가요?
그건 c로 실행시키셔서 그런 겁니다.
c에서는 배열의 크기를 선언할 때 변수가 들어가면 안됩니다.
c++로 실행시키시면 잘 나올 겁니다.
@seawon0808 VLA(가변 길이 배열, 배열의 크기에 변수를 넣는 것)은 C99 표준입니다.
또한 int d[100][100] = {}, int d[100][100]={0}, int d[100][100]={0,} 등등 모두 올바르게 초기화되지 않습니다. 첫 번째의 경우는 아예 배열에 아무런 초기화를 하지 않는 것이나 마찬가지이며, 두 번째와 세 번째는 첫 번째 칸만 0으로 채우게 됩니다. 나머지 칸들에는 모두 쓰레기값이 들어가 있습니다. 제대로 초기화를 하려면 memset() 함수를 이용하거나 for문을 이용하는 등의 방법을 사용해야 합니다.
죄송합니다.
제가 잘못 알고 있었네요.
저는 0000000000 님이 말하신 방법을 사용하면 초기화가 되는 것으로 알고 있었고, 검색을 해봐도 그렇게 나옵니다.
그리고 중괄호를 사용하면 나머지 칸들에 쓰레기 값이 들어있던 것이 0으로 바뀌었는데 더 알려주실 수 있나요?
https://en.cppreference.com/w/...
다만 빈 중괄호 {}로 초기화하는 것은 C23 이전까지는 C에서는 비표준이며 C++에서만 사용 가능합니다.
초기화에 대해서는 제가 잘못 알고 있던 것 같네요. 제대로 레퍼런스도 찾아보지 않고 댓글 단 점 죄송합니다.
댓글을 작성하려면 로그인해야 합니다.
ssms7733 1년 전
엄청 간단한 함수인데 2차원 배열에 값할당이 안됩니다 ㅠㅠ
제가 디버깅해보니 문자열 길이가 같을때는 되지만 다를때는 안되네요...
내일마감인 과제인데 도와주세요 ㅠㅠㅠㅠㅠㅠㅠㅠ