2011. 2. 26. 20:17

 #include <stdio.h>
int main(void){
    int val;
    scanf("%d", &val);
    return 0;
}
scanf 함수는 내부적으로 사용자로부터 정수를 입력받은 다음, 변수 val에 접근해서 대입해야 한다.
이렇게 scanf함수 내에서 main 함수에서 선언된 지역 변수에 접근하기 위해서는 해당 변수의 주소를 알아야 한다. 그래서 scanf함수를 호출하면서 값이 채워질 지역 변수 val의 주소 값을 인자로 전달하고 있는것이다. 결국 Call-By-Reference에 해당한다.



char형의 배열로 문자열을 입력받을 때는 왜 &연산자를 붙여주지 않는 것일까?
 #include <stdio.h>
int main(void){
    char str[100];
    printf("문자열 입력 :");

    scanf("%s", str);
    return 0;
}
위 코드에서 배열 이름 str은 배열의 주소를 나타낸다. 그러므로 &연산을 할 필요가 없는 것이다.

'Language > C언어' 카테고리의 다른 글

배열포인터  (0) 2011.02.27
포인터와 const키워드  (0) 2011.02.26
배열을 함수 인자로 전달받는 방법  (0) 2011.02.26
문자열 배열  (0) 2011.02.26
메모리 동적 할당 _ 1] malloc 함수 - free 함수 - calloc 함수  (0) 2010.09.28
Posted by Triany