|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


3198, 1/160 |
![]() |
![]() |
![]() |
![]() |
|
박영민 | ||||||
|
[포인터]C언어 질문 | ||||||
|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6447 [복사]
Hit : 4881 Date : 2014/03/12 09:00
|
|||||||
| ![]() |
| |
| hackartist | 많은 설명이 필요하겟네요. ㅎ 자세한 부분은 hackartist.anon@gmail.com으로 연락주세요 ㅎ A1. 배열=포인터 이 원리에 의하면 2차원 배열이니깐 이중포인터에 넣으면 된다 라고 생각할수 있지만, 조금 다릅니다 배열은 엄밀히 말하면 const pointer 이중 배열의 의 경우 위에서는 [4][4] 는 타입으로 말하면 *[4] 뒤의 배열의 갯수가 정해진 이중 포인터 인것이죠. 그래서 타입 캐스팅이 안됩니다. 따라서 이거는 사용용도에 따라 나눠지겠는데, 위의 용도에서는 int **A=(int**)pArr1; 과 같이 고쳐주는게 맞겠네요.(물론 이경우 버퍼오버플로우 고려해야겠죠. )나머지 내용 생략. A2. 현재 B는 그냥 * 기 때문에 일차원적으로 봐야하고요. 이중 포인터 int **B로 선언되었다고 가정하고 설명할게요. 이때 B[i][j]는 정상출력될거고요. *B[i][j]는 타입오류 날겁니다. 만약 *(int*)B[i][j] 를 할경우 런타임에 스택어버플로우 오류 또는 쓰레기값(아주 낮은확률) 출력될 수 있습니다. 나머지는 길어서 생략.. A3. 우선 RightNinety파라미터에 이름이 첫번째와 두번째가 동일하고요. main에서 sizeof(arr) 여기서 arr 변수는 없는 변수기때문에 컴파일 오류 날거 같네요. 두번째 sizeof(arr[0])도 마찬가지. |
2014/04/22 | |
| 박영민 | 답변 감사합니다. | 2014/04/26 | |
|
|