배열을 printf함수로 출력시 주소값과 요소값구분
시윤
질문 제목 : 배열을 printf함수로 출력시 주소값과 요소값구분printf함수로 배열을 출력시 어떨때 배열 요소로 출력하고 어떨때 주소값을 출력하는지...질문 내용 :
코드 :
#include stdio.h
int main (void)
{
int a[5]={0,1,2,3,4};
printf(%d %d \n, a[0], a[1]);
printf(%d %d \n, &a[0], &a[1]);
printf(배열 이름 : %d \n, a);
return 0;
}
실행하면
0 1
1245036 1245040
배열이름 : 1245036
이렇게 출력이 됩니다
#include stdio.h
int main (void)
{
int a[3][2]={
{1,2},
{3,4},
{5,6},
};
printf(a[0] : %d \n, a[0]);
printf(a[1] : %d \n, a[1]);
printf(a[2] : %d \n, a[2]);
printf(a : %d \n, a);
return 0;
}
실행하면
a[0] : 1245032
a[1] : 1245040
a[1] : 1245048
a : 1245032
나머진 다 이해가 되는데
어떤경우에 주소값이 반환되고
어떤경우에 요소값을 반환하는지 모르겠습니다
첫번째코드중printf(%d %d \n, a[0], a[1]);
는 배열요소인0과 일을 반환하고 밑에줄에는 &연산자를 붙여서 주소값을 반환하게 한건 알겠는데
밑에 코드도 다를건 없다고 생각되는데
왜 요소값이 아닌 주소값을 반환하는거죠??
위에처럼 배열 요소를 반환하지 않고요...
-
지우개
아하 이해했습니다 ㅎㅎ
감사합니다 ㅎㅎ
제가 머리가 나빠서ㅠ.ㅠ;;; -
솔잎
2차원 배열에서
a[0]은 배열 {1,2}의 배열 이름이 되고
a[1]은 배열 {3,4}의 배열 이름이 되고
a[2]은 배열 {5,6}의 배열 이름이 됩니다.
//배열의 이름은 배열의 시작주소라고 생각하시면 될것 같네요.
따라서 시작주소에서 몇번째 있는 요소의 값을 불러오라는 의미로
위의 배열이름 a[0]에서 0번째 요소의 값이라 하면 a[0][0] ==1 되겠죠..