본문 바로가기

C57

#If #else #endif 전처리기 #include #define DEBUG_LEVEL 2 // 2를 DEBUG_LEVEL로 정의 int main() { #if DEBUG_LEVEL >= 2 // DEBUG_LEVEL이 2보다 크거나 같으면 #if, #endif 사이의 코드를 컴파일 printf("Debug Level 2\n"); #endif #if 1 // 조건이 항상 참이므로 #if, #endif 사이의 코드를 컴파일 printf("1\n"); #endif #if 0 // 조건이 항상 거짓이므로 #if, #endif 사이의 코드를 컴파일하지 않음 printf("0\n"); #endif return 0; } 실행결과 Debug Level 2 1 https://dojang.io/mod/page/view.php?id=664 C 언어 코딩 도.. 2020. 11. 9.
구조체 #include #include int main() { // 구조체(사용자가 정의한 타입) 정의 struct bibim{ int a; float b; char c; char d[5]; }; struct bibim b1, b2; // 구조체 변수 선언 //구조체 멤버변수에 값 저장 b1.a = 10; b1.b =1.1f; b1.c = 'A'; strncpy(b1.d, "ABCDE", 5); b2.a = 100; b2.b = 10.1f; b2.c = 'B'; strncpy(b2.d, "hello", 5); printf("--------b1 struct--------\n"); printf("a: %d\n", b1.a); printf("b: %f\n", b1.b); printf("c: %c\n", b1.c); .. 2020. 10. 6.
이차원 배열 개념 2020. 8. 19.
포인터 #include void main(void) { char ch; int in; double db; printf("ch의 포인터:%u\n", & ch); printf("in의 포인터:%u\n", & in); printf("db의 포인터:%u\n", & db); } 2020. 8. 11.
p485 배열값바꾸기 #include void IncreArrElm(int arg[]); void ArrPrintf(const int arg[]); int main(void) { int arr[3] = { 1, 2, 3 }; printf("***증가 이전 배열정보 출력***\n"); ArrPrintf(arr); IncreArrElm(arr); printf("***증가 이후 배열정보 출력***\n"); ArrPrintf(arr); return 0; } void IncreArrElm(int arg[]) { int i; for (i = 0; i < 3; i++) arg[i] = arg[i] + 1; } void ArrPrintf(const int arg[]) { int i; for (i = 0; i < 3; i++) printf(.. 2020. 8. 11.
p481 배열 주소값 전달 원리 #include void ArrPrintf(int arg[]); int main(void) { int arr[3] = { 1, 2, 3 }; ArrPrintf(arr); return 0; } void ArrPrintf(int arg[]) { int i; for (i = 0; i < 3; i++) printf("%4d", arg[i]); printf("\n"); } 2020. 8. 11.
p460 이차원배열 시작주소 #include int main(void) { int arr[3][4]; printf("배열의 시작주소 : %d \n", arr); printf("1행의 시작주소 : %d \n", arr[0]); printf("2행의 시작주소 : %d \n", arr[1]); printf("3행의 시작주소 : %d \n", arr[2]); return 0; } 2020. 8. 7.
p452 도서관자리 2차원배열 #include int SeatAssign(int v, int h); int seats[5][5]; int main(void) { int vLine; //세로라인 int hLine; //가로라인 while (1) { printf("할당할 좌석의 세로, 가로 위치 입력 : "); scanf("%d %d", &vLine, &hLine); if (hLine 2020. 8. 7.
배열- 문자열 입력받고 거꾸로 프린트하기 strlen Hello -> OLLEH #include #include int main() { char str[80], rev[80]; int i; printf("문자열 입력:"); scanf("%s", str); for (i = 0; i < strlen(str); i++) // strlen: const char* 타입의 문자열 받아서 길이를 반환하는 함수 { rev[i] = str[strlen(str) - i - 1]; } rev[i] = '\0'; printf("%s를 거꾸로 하면 %s", str, rev); return 0; } 2020. 8. 7.
array - enter ages of 5 ppl -> avg #include int main() { int ages[4]; int tot = 0; double avg; int i; printf("네명의 발사이즈를 입력하세요 : "); for (i = 0; i < 4; i++) { scanf("%d", &ages[i]); } for (i = 0; i < 4; i++) { tot += ages[i]; } avg = (double)tot / 4; printf("입력된 네명의 발사이즈 : "); for (i = 0; i < 4; i++) { printf("%d, ", ages[i]); } printf("\n네명의 평균 발사이즈는 %1.lf입니다\n", avg); return 0; } #include int main() { int ages[5]; int tot = 0; d.. 2020. 8. 7.
QQ p436 null 쓰레기값 #include int main(void) { char str1[5] = "AAA"; char str2[ ] = "BBB"; char str3[ ] = { 'A', 'B', 'C'}; char str4[] = { 'A', 'B', 'C', '\0'}; printf("str1 : %s \n", str1); printf("str2 : %s \n", str2); printf("str3 : %s \n", str3); printf("str4 : %s \n", str4); str1[0] = 'C'; str1[1] = 'B'; printf("str1 : %s \n", str1); return 0; } 2020. 8. 6.
p432 null \0 #include int main(void) { printf("AA0BB0CC"); printf("|"); printf("AA\0BB\0CC"); printf("|"); printf("\0AA"); printf("|"); //print AA0BB0CC|AA|| return 0; } \0 문자열의 끝임을 알려줌. 문자열의 끝에는 항상 있음 2020. 8. 6.
p416 배열 #include int main(void) { int arr[5]; int i; arr[0] = 10;arr[1] = 20;arr[2] = 30; arr[3] = 40;arr[4] = 50; for (i = 0; i < 5; i++) printf("%d번째 요소에 저장된 값: %d \n", i+1, arr[i]); return 0; } 2020. 8. 6.
p385 산술시프트 / 논리시프트 #include int main(void) { int n = -16; int r1 = n >> 1; int r2 = n >> 2; int r3 = n >> 3; int r4 = n >> 4; printf("result1= %d \n", r1); printf("result2= %d \n", r2); printf("result3= %d \n", r3); printf("result4= %d \n", r4); return 0; } 2020. 8. 6.
p381 비트 쉬프트 연산자 #include int main(void) { int n = 1; int r1 = n 2020. 8. 6.
p376 비트단위 &연산자 #include int main(void) { int n1 = -1; int n2 = 0; int result1 = ~n1; int result2 = ~n2; printf("result1=%d \n", result1); printf("result2=%d \n", result2); return 0; } ​ #include int main(void) { int n1 = 15; int n2 = 20; int result = n1 & n2; printf("n1=%d \n", n1); printf("n2=%d \n", n2); printf("result=%d \n", result); return 0; } 2020. 8. 6.
p365 8진수 16진수 #include void CountFctCall(void); int main(void) { int num1; unsigned int num2; unsigned int num3; unsigned int num4; printf("10진수 정수 입력: "); scanf("%d", & num1); printf("10진수로 %d \n", num1); printf("8진수 정수 입력: "); scanf("%o", &num2); printf("10진수로 %d , 8진수로 %#o \n", num2, num2); printf("16진수 정수 입력(소문자): "); //ea scanf("%x", &num3); printf("10진수로 %u, 16진수로 %#x \n", num3, num3); //14x16 + 10x16 p.. 2020. 8. 6.
p341지역변수 static - static variable 정적변수 #include void CountFctCall(void); int main(void) { CountFctCall(); CountFctCall(); CountFctCall(); return 0; } void CountFctCall(void) { static int cnt = 1; //지역변수 앞에 static 이 붙음. ->지역변수지만 전역변수처럼 사용가능 printf("이함수는 %d번째 호출되었음 \n", cnt); cnt++; } 2020. 8. 6.
p345 register 레지스터 #include int Increment(register int n) { return n + 1; } int main(void) { register int num = 10; num = Increment(num); printf("%d \n", num); num = Increment(num); printf("%d \n", num); num = Increment(num); printf("%d \n", num); return 0; } 2020. 8. 6.
p336 전역/지역변수 global/local variable #include int fct1(void); int fct2(void); int fct3(void); int val; //전역변수 val int main(void) { printf("%d \n", val); // print 0 fct1(); fct2(); fct3(); return 0; } int fct1(void) { val++; printf("%d \n", val); // print 1 } int fct2(void) { val++; printf("%d \n", val); // print 2 } int fct3(void) { int val = 0; //전역변수를 가리는 지역변수 val++; printf("%d \n", val); } 2020. 8. 6.