게시글
질문&답변
2024.02.09
24분 20초경 25분 5초경 질문
구글의 CHATGPT에 질문을 해봤는데C 문자열은 마지막에 null 문자('\0')로 종료됩니다.만약 사용자가 입력한 문자열에 null 문자가 포함되어 있지 않으면 런타임 에러가 발생합니다.이런 답변을 해주더라고요. 그래서 수박님의 답변과 이 답변을 같이 생각해서 제 나름의 결론을 내려봤는데 이게 맞을까요?scanf("%6s %6s", str1, str2)을 실행하면scanf() 함수로 버퍼에서 최대 6개의 문자를 읽으려고 시도를 하는데이러면 str1이나 str2라는 문자열에 NULL캐릭터가 들어가지 못한다.이렇게 되면 문자열이 NULL 캐릭터를 만나지 못해서 종료를 하지 못해 런타임 에러가 발생한다.
- 2
- 2
- 260
질문&답변
2024.01.28
9분 48초 (*(parr + 1))[1] 이게 이해가 잘 안되네요
&arr1[0]은 parr[1]이고 거기에 [1]을 붙인거라고 생각해도 괜찮을까요?
- 2
- 3
- 285
질문&답변
2024.01.25
6분 54초경 질문
이것도 비슷한 질문인 것 같은데int* pt;int(*pa)[3];int ar1[2][3] = { 3, };에서pt = &ar1[0][0];pt = ar1[0];이렇게 대입하는 건 가능한데pt = ar1;이렇게 대입하는 건 불가능한 이유는 ar1 자체는 2차원 배열이기 때문에 그냥 포인터에는 담을 수가 없다.고 말씀을 하셨는데 그렇다면 포인터의 배열에는 담을 수가 있다는 말씀이신 거잖아요.어째서 2차원 배열이기 때문에 그냥 포인터에는 담을 수가 없고 포인터의 배열에는 담을 수가 있다는 건가요?2차원 배열의 행과 포인터 배열의 크기가 같아야해서? 인가요?
- 2
- 2
- 279
질문&답변
2024.01.18
14분 41초경 질문
arr은 &arr[0]이다.&arr[0]은 arr[0]이다.arr[0]은 &arr[0][0]이다.따라서 &arr[0]은 &arr[0][0]이기 때문에 arr은 &arr[0][0]이다.이렇게 나름 해석을 해봤는데 제가 해석하면서도 이건 뭔가 이해하는 방법이 잘못된 거 같다는 느낌이 드네요...
- 2
- 2
- 211
질문&답변
2024.01.16
9분 20초경 질문
*(*(parr + 1) + 1)제가 이걸 좀 틀리게 해석한 것 같네요 제가 다시 해석을 해보자면parr은 arr0을 가리킨다. 그러므로 parr에 1을 더하면 arr1을 가리키게 된다.거기에 *를 붙이면 arr1이 가리키는 arr1[0]을 가리키게 되고, 또 거기에 1을 더하면 arr1[0][1]을 가리키게 되고,또또 거기에 *를 붙이면 arr1[0][1]의 공간에 있는 데이터에 접근을 하게 된다.이렇게 해석이 되는 거 같은데 맞는건가요?
- 2
- 3
- 412
질문&답변
2024.01.16
9분 20초경 질문
parr[j][i]에서parr[0]은 arr0이고 parr[1]은 arr1이니 주소가 나오는 것이고parr[0][0]은 arr0[0]이고 parr[1][0]은 arr1[0]이라 데이터가 나오는 것이 맞나요?제가 이해한 게 맞았으면 좋겠네요
- 2
- 3
- 412