|
조준회 님이 쓰신 글 :
: n에 대해서 포인터로 선언하고..
: 메모리를 할당하지 않았네요..
:
: 포인터가 아닌 변수로 선언을 하던가.. 아니면 malloc등으로 메모리를 할당해 주셔야 합니다.
:
: 경선 님이 쓰신 글 :
: : void main()
: : {
: : int i, j, *n;
: : printf("Input the Number : ");
: : scanf("%d", n);
: : for (i=0;i<*n;i++)
: : {
: : for (j=0;j<*n;j++)
: : {
: : printf("%4d", i+j+1); // i+j+1의 오류의 원인은?
: : }
: : printf("\n");
: : }
: : }
* 라는 연산자에 대해서 이해가 아직 잘 안되시는것 같군요..
int *n 이라는 것은 int type의 & 값을 받기 위한 메모리를 선언한것입니다.
위의 프로그램을 실행시키면 아마 warning 이 하나 뜨고 돌아가기는 잘 돌아갈것입니다.
하지만 님이 입력하신 숫자는 메모리의 레퍼런스로 값을 넣은 것입니다.
나중에 for 문에 다달았을때 잘못된 메모리 참조 오류가 나겠죠...^^
위에 scanf 문에서 입력하시 숫자에 해당하는 메모리 레퍼런스 를 참조하려고 하니깐요..
|