글
함수를 이용해서 iNum1의 값과 iNum2의 값을 바꿔보자.
#include void Swap(int n1, int n2); int main() { int iNum1 = 10; int iNum2 = 20; Swap(iNum1,iNum2); return 0; } void Swap(int n1, int n2) { int temp; //임시로 공간(변수)하나 주자 temp= n1; //temp에 10이 들어간다. n1 = n2; //n1에 20이 들어간다. 그러면 n1 == 20 n2 = temp; //n1에 값이 temp에 있었지요? 그렇죠? n2 == 10 printf("%d %d", n1, n2); //n1이 20 n2가 10이 되었다. } |
하지만 Main함수에서 iNum1값과 iNum2값이 바뀌었나요? 아니죠.
하지만 메모리 주소로 직접들어가면 바꿀수 있죠? 대마법사 포인터를 불러봅시다.
안녕 망할포인터야.!! 바꿔주세요다사이.
#include <stdio.h> void Swap(int *n1, int *n2); int main() { int iNum1 = 10; int iNum2 = 20; Swap(&iNum1, &iNum2);
printf("iNum1:%d iNum2:%d", iNum1, iNum2); return 0; } void Swap(int *n1, int *n2) { int temp; temp = *n1; //temp에 n1이 가리키는 값10들어갑니다. *n1 = *n2; //n1 에 n2가 가리키는 값20들어갑니다. *n2 = temp; //n2 에 temp(n1) 값10들어갑니다. //참쉽죠!! } |
scanf를 이용한 배열선언
#include <stdio.h> int main() { char str[50]; //50까지 배열을 선언함 int idx=0; //[idx]를 하기 위한 선언 printf("문자열입력하시오:"); scanf("%s", str); printf("입력 받은 문자열: %s \n", str);//scanf에는 null값이 찍히니까 알아서 해준다. printf("문자 단위 출력: "); while(str[idx] != '\0') //하나씩 str[0]에서부터 [50]까지 찍어준다. { //'\0' null값이 찍히면 반복문 종료. printf("%c", str[idx]); idx++; } printf("\n"); return 0; } |
'C언어' 카테고리의 다른 글
20140331 이중포인터 (0) | 2014.03.31 |
---|---|
20140327 포인터와 배열 (0) | 2014.03.27 |
20140324 지역변수 전역변수 & 배열 (0) | 2014.03.24 |
20140321 함수(1) (0) | 2014.03.21 |
20140320 포인터의 기초 (0) | 2014.03.20 |
RECENT COMMENT