본문 바로가기
반응형

전체 글303

[C언어] 포인터 연산의 활용 배열 ar 이 있고, 이 배열 주소를 포인터 p_ar 에 저장했다고 하자. 이때 아래 세 코드의 의미가 같다 . ar[i]==*(ar+i)==*(p_ar+i) ar은 주소이고, i가 더해지면 i번째 요소의 주소가 된다. 해당 주소가 가리키는 값에 * 를 이용하여 접근하면 결국 ar[i] 과 같아진다. 아래는 예시이다. #include int main(void) { int ar[3]={10,20,30}; int *p_ar=ar; printf("%d\n",*(ar+1)); printf("%d\n",*(p_ar+1)); printf("%d\n",ar[1]); } 2022. 3. 31.
[C언어] 포인터의 연산 int 형 포인터에 1을 더하면, 값이 4 증가한다. 크기만큼 증가하는 것이다. double 이라면 8이 증가할 것이다. 아래는 예시이다. #include int main(void) { int num=3; int *p_num=# printf("%p\n",p_num); printf("%p\n",p_num+1); printf("%p\n",p_num+2); printf("%p\n",p_num+3); } 2022. 3. 31.
[C언어] 포인터를 배열 이름처럼 사용 배열 이름은 포인터입니다. 포인터변수를 하나 만들고 배열 이름을 입력하면 해당 포인터변수를 배열 이름처럼 사용할 수 있습니다. int main(void) { int ar[2]={10,20}; int *p_ar=ar; printf("%p\n",p_ar); printf("%d",p_ar[0]); } 배열 ar 을 p_ar 에 입력하면 배열 ar의 주소가 포인터변수 p_ar에 할당됩니다. 배열 ar 자체가 주소였는데, p_ar 도 같은 주소이므로 p_ar 을 ar처럼 사용할 수 있게 된 것입니다. 2022. 3. 30.
[C언어] 배열의 이름은 포인터 배열의 이름은 포인터입니다. 배열의 이름을 출력하면 주소가 출력됩니다. 아래와 같습니다. 주소가 가리키는 값에 접근하는 *연산자도 사용가능합니다. #include int main(void) { int ar[2]={10,20}; printf("%p\n",ar); printf("%p\n",&ar[0]); printf("%p\n",&ar[1]); printf("%d\n",*ar); printf("%d\n",*&ar[0]); printf("%d\n",*&ar[1]); } 2022. 3. 30.
c언어 조건문,반복문,함수 한눈에 보기 while (조건) {명령} for (초기값; 조건식; 변화식 ) {명령} if (조건) {명령} else if (조건) {명령} else {명령} 반환형 함수이름 (변수) {내용} 2022. 3. 30.
[C언어] 포인터란 무엇인가 어떤 변수가 정의되면 저장공간을 할당받습니다. 각 저장공간에는 고유한 주소가 있는데요. 이 주소를 저장하는 변수가 포인터변수입니다. 아래는 예시입니다. int main(void) { int num=3; int * pnt_num=# printf("%p \n",pnt_num); printf("%d",*pnt_num); } &는 주소를 가져오는 주소연산자입니다. num의 주소를 가져다가 pnt_num 에 저장하였습니다. 포인터변수를 정의할 때는 *를 붙입니다. 출력할 때 서식문자는 %p입니다. 포인터가 가리키는 주소에 저장된 값을 출력할 때는 * 연산자를 사용합니다. 2022. 3. 30.
[C언어] 문자열의 끝을 나타내는 널문자 문자열에서는 널문자 '\0' 를 문자열의 끝으로 인식합니다. 널문자의 아스키코드가 0이므로 0을 입력해도 결과는 같습니다. 아래는 예시입니다. int main(void) { char str[10]="abcdefgh"; printf("%s\n",str); str[4]=0; printf("%s\n",str); } 다섯번째 자리에 널문자를 넣었더니, 네번째 자리 까지만 문자열로 인식합니다. 2022. 3. 30.
[C언어] 배열의 길이 출력하기 정의된 변수가 몇 바이트를 사용하는지는 sizeof 함수로 알 수 있습니다. sizeof 함수는 배열에도 적용이 가능합니다. 길이가 3인 배열을 정의하고 sizeof 함수를 적용해봅시다. #include int main(void) { int a[3]; printf("%ld",sizeof(a)); } 12가 출력됩니다. 4바이트인 정수형 세개가 하나의 배열을 구성하고 있기 때문입니다. 전체 크기 12를 정수형 하나의 크기 4로 나눠주면 배열의 길이가 됩니다. #include int main(void) { int a[3]; printf("배열의 길이 : %ld",sizeof(a)/sizeof(int)); } 3이 출력됩니다. 2022. 3. 29.
[C언어] 배열 초기화하기 배열을 초기화 하는 방법은 네가지가 있습니다. 1. 배열 선언 후 각 원소 각각 입력 int main(void) { int ar[3]; ar[0]=10; ar[1]=20; ar[2]=30; } 2. 중괄호 이용하여 입력 #include int main(void) { int ar[3]={10,20,30}; } 배열 크기를 비워놓아도 결과는 동일합니다. #include int main(void) { int ar[]={10,20,30}; } 3. 배열의 길이 보다 초기값을 덜 선언 #include int main(void) { int ar[3]={10,20}; } 나머지 값은 0으로 초기화됩니다. 2022. 3. 29.
[C언어] 배열 정의하기 배열을 정의하는 방법은 아래와 같습니다. 자료형을 선언할 때 대괄호 안에 배열의 길이를 넣어주면 됩니다. 아래 배열은 자료형이 정수이고 길이가 5인 배열입니다. int ar[5]; 각 배열 요소는 0 부터 시작됩니다. ar[0] 이 첫번째 요소이고, ar[4] 가 마지막 요소인 다섯번째 요소입니다. 아래는 배열 정의 예시입니다. #include int main(void) { int ar[5]; ar[0]=10; printf("첫번재 요소: %d",ar[0]); } 2022. 3. 29.
[C언어] 재귀함수를 이용한 팩토리얼 함수 만들기 재귀함수를 이용하여 팩토리얼 함수를 만들어보면 아래와 같습니다. #include int factorial(int n) { if(n==0) return 1; else return n * factorial(n-1); } int main(void) { printf("5!=%d",factorial(5)); } 아래는 실행결과입니다. 2022. 3. 29.
[C언어] 재귀함수 재귀함수는 함수 안에 자기 자신을 호출하는 함수를 말합니다. 아래 예시에서 MyRecur 이 재귀함수입니다. #include void MyRecur(void) { printf("Recursive call! \n"); MyRecur(); } int main(void) { MyRecur(); } 위 코드를 실행할 경우 "Recursive call!" 이 무한히 출력됩니다. 2022. 3. 28.
[C언어] 지역변수를 종료시 까지 유지 (static 변수) - 지역변수 앞에 static 을 붙여주면 프로그램 종료 시 까지 사라지지 않는다. 단, 선언된 함수 내에서만 접이 가능하다. - 값을 입력하지 않으면 0으로 초기화된다. void myfunction(void) { static int num=10; } 2022. 3. 28.
[C언어] 전역변수 - 중괄호 밖에 정의된 변수로 프로그램 종료시 까지 존재 - 값을 입력하지 않으면 0으로 초기화됨 - 지역변수와 이름이 겹칠 경우, 지역변수로 접근 아래는 예시입니다. #include int num=10; int main() { printf("전역변수 : %d \n",num); int num=20; printf("지역변수 : %d \n",num); } 2022. 3. 28.
[C언어] 지역변수 - 함수 안에 선언된 변수는 함수가 반환되면 소멸됨 - 반복문이나 조건문 안에 선언도니 지역변수도 해당 문장 탈술 시 소멸됨 - 쉽게 이해하면 중괄호 { } 안에 선언된 변수임. 2022. 3. 28.
[C언어] 반환값도 없고 인자도 없는 함수 C언어에서 함수를 선언할 때 함수 이름 앞에 반환 형식을 쓰고 소괄호 안에는 입력값인 인자를 씁니다. int MyFun(int num) { } 반환값도 업고 인자도 없는 함수를 정의할 수 있습니다. 아래와 같이 void 를 사용하면 됩니다. void MyFun(void) { } 아래는 예시입니다. #include void OnlyPrint(void) { printf("안녕 난 반환값도 없고 인자도 없어"); } int main() { OnlyPrint(); } 실행 결과는 아래와 같습니다. 2022. 3. 28.
[C언어] 반환값이 없는 함수 C언어에서 함수를 선언할 때 함수 이름 앞에 반환 형식을 씁니다. int main( ) { } 반환값이 없는 함수를 정의할 때는 반환형식을 쓰는 자리에 void 라고 써주시면 됩니다. void 는 '텅 빈' 이라는 뜻입니다. 아래는 예시입니다. #include void OnlyPrint(int num) { printf("입력값: %d",num); } int main() { OnlyPrint(3); } 2022. 3. 18.
[C언어] 함수만들기 (두 값의 평균) 두 값의 평균을 계산해주는 mean2 함수를 만들어봅시다. int mean2 (int num1, int num2) { return (num1+num2)/2; } mean2 앞의 int 는 반환형입니다. 함수의 결과를 int로 반환하겠다는 의미입니다. 함수를 한번 사용해봅시다. #include int mean2 (int num1, int num2) { return (num1+num2)/2; } int main() { int mymean; mymean=mean2(5,1); printf("%d",mymean); } 2022. 3. 17.
[C언어] printf 함수가 반환하는 값 printf 함수는 화면에 문자열을 출력하는 기능을 하는데, 그 자체로도 값을 반환합니다. printf 함수가 반환하는 값은 문자열 길이입니다. printf 함수의 반환값을 확인하는 방법은 printf 함수를 변수에 입력하는 것입니다. 아래 코드에서 printf 함수를 num1 과 num1 라는 변수에 입력하였습니다. #include int main() { int num1,num2; num1=printf("aaa\n"); num2=printf("aaaaa\n"); printf("%d\n",num1); printf("%d\n",num2); } 코드 실행 결과는 아래와 같습니다. aaa가 입력된 printf 의 반환값은 4입니다. aaaaa가 입력된 printf 의 반환값은 6입니다. 문자 개수보다 하나가 .. 2022. 3. 17.
[C언어] switch (스위치처럼 선택) switch 문은 중괄호 안의 값과 일치하는 case 를 실행하는 문장입니다. 아래 예시를 봅시다. #include int main() { int num=2; switch(num) { case 1: printf("case1 입니다."); case 2: printf("case2 입니다."); default: printf("디폴트 입니다."); } } 실행 결과는 아래와 같습니다. num 에 2가 입력되어 있으니 case2가 실행되었습니다. 그런데 default 도 실행되었습니다. 디폴트는 항상 실행됩니다. 다른 case 가 실행될 경우 default 는 실행되지 않게 하려면 break 문을 추가하면 됩니다. #include int main() { int num=2; switch(num) { case 1: .. 2022. 3. 16.
[C언어] continue (특정 조건에서 이후 문장 스킵) continue 문은 if문과 함께 사용합니다. 반복문 안에서 if문이 만족할 경우 이후 문장을 스킵하고 다음 반복으로 넘어갑니다. 아래는 1부터 숫자를 출력하다가 5가 될 경우 출력을 스킵하는 예시입니다. #include int main() { int num1=0; while(num1 2022. 3. 16.
[C언어] 31. break (특정 조건에서 반복문 종료) break 문은 if문과 함께 사용합니다. 반복문 안에서 if문이 만족할 경우 반복문을 종료하게 하는 기능을 합니다. 아래는 1부터 숫자를 출력하다가 10 이상이 될 경우 반복문을 종료하는 예시입니다. #include int main() { int num1=1; while(1) { if(num1>=10) { break; } printf("%d\n",num1); num1=num1+1; } } 아래는 실행 결과입니다. 2022. 3. 16.
[C언어] 삼항연산자 삼항연산자 사용 방식은 아래와 같습니다. (조건) ? 만족시실행 : 불만족시실행 아래는 예시입니다. #include int main() { int num1=2; int num2=3; (num1==num2) ? printf("hi") : printf("hello"); } 2022. 3. 15.
[C언어] if~else if 문 예시는 아래와 같습니다. else if 는 원하는 만큼 추가할 수 있습니다. int main() { int num=2; if(num==5) { printf("I'm if"); } else if(num==3) { printf("I'm else if"); } else { printf("I'm else"); } } 2022. 3. 15.
[C언어] if~else 문 if문은 소괄호 안이 참인 경우에 중괄호 안의 문장을 실행합니다. else 문이 있다면, if 문 소괄호 안이 거짓인 경우 else 문이 실행됩니다. #include int main() { int num=2; if(num==5) { printf("it's true"); } else { printf("I'm else"); } } 아래는 실행 결과입니다. 2022. 3. 15.
[C언어] if 문 if문은 소괄호 안이 참인 경우에 중괄호 안의 문장을 실행합니다. 예시는 아래와 같습니다. #include int main() { int num=2; if(num==2) { printf("it's true"); } } 아래는 실행 결과입니다. 2022. 3. 14.
[C언어] For 문 특정 조건을 만족할 경우 중괄호 안의 문장을 실행한다는 것은 while 문과 같습니다. 다른점은 초기식과 증감식 모두 소괄호에 포함된다는 것입니다. while 문과 비교해봅시다. 아래는 0,1,2 가 출력되는 while 문입니다. #include int main() { int num=0; while(num 2022. 3. 14.
[C언어] do while 문 do while 문은 while 문과 비슷한데, 검사 순서가 다릅니다. while 문은 검사를 먼저 하고 조건이 만족되면 명령을 실행하는 반면, do while 문은 일단 한번 실행하고 검사합니다. 아래와 같이 코드를 작성할 경우 while 문은 아무것도 출력되지 않지만 do while 문은 출력됩니다. int main() { //while문 int num; num=3; while(num 2022. 3. 11.
[C언어 강의] 24. while 문 while문은 소괄호( ) 안의 조건이 만족되었을 때, 중괄호 { } 안의 명령어를 실행하는 조건문입니다. 아래는 예시입니다. num이 3보다 작은 경우 num을 출력하는 while문입니다. #include int main() { int num=0; while(num 2022. 3. 10.
[C언어] 문자출력 vs 문자열출력 문자는 %c 서식문자를 이용하여 출력하고, 문자열은 %s 서식문자를 이용하여 출력한다. #include int main() { char word='h'; char* string="hi hello"; printf("문자 : %c \n",word); printf("문자열 : %s",string); } 아래는 결과입니다. 2022. 3. 8.
반응형