반응형

전체 글 429

[따배시] 포인터에 대한 개념 설명

int a; int b; int c; 를 하면 주소를 저장하고 데이터를 저장한다. int type은 4byte 즉 4개의 공간을 사용하며 double은 8개의 공간을 사용하는 방식이다. 변수가 주소를 사용하니 주소를 알고 싶다면? &a; 를 사용하면 주소연산자가 적용이 되어서 주소로 사용되는 숫자의 값을 가져온다. 이를 해서 다른 변수에 대입해줄 수 있으며 주소값을 저장하는 변수는 *a_ptr 즉 *를 앞에 붙여준다. int *a_ptr = &a; a_ptr도 변수이므로 메모리에 공간을 가지고 있다. 이 메모리 값에 주소 값을 저장하는 것이다. 포인터는 주소를 저장하는 것이기 때문에 직접 데이터를 저장하는 것보다는 다른 메모리의 공간을 가리키는 역할을 한다. 그래서 이름이 pointer 즉 가리키다라는 ..

카테고리 없음 2024.01.16

[따배시] 9.4 변수의 영역과 지역 변수

변수는 영역에 따라서 변수를 받을 수 있고 받지 않을 수도 있다. {}를 기준으로 변수를 구분할 수 있는데 {}안에 int a; 가 선언이 되었다면 {}밖에 값에서 a를 불러올 수는 없는 것이다. 블록 안에서만 유효하기 때문이다. 강의에서는 이 내용을 예제와 함께 설명해주었다. #include #include int int_max(int i, int j); int int_max(int i, int j) { int m; //{} 블록 안에서만 유효 m = i > j ? i : j; return m; } int main() { int a; a = int_max(1, 2); printf("%d\n", a); printf("%p\n", &a); { int a; //영역이 다를 경우 변수 이름이 같아도 문제가 없..

IT 프로그래밍 2024.01.15

[따배시 6.1] while문을 이용한 scanf 함수 정의

int main(void) { int num, sum = 0; int status; printf("Enter an integer (q to quit) : "); //문자를 입력했으면 0으로 뜬다. status = scanf("%d", &num); while (status == 1) { sum = sum + num; printf("Enter next integer ( q to quit) : "); status = scanf("%d", &num); } printf("Sum = %d\n", sum); return 0; } 위 예제 같은 경우 올바르게 작동은 하지만 status가 반복이 되는 것을 볼 수 있다. 프로그래밍을 할 때는 반복되는 점을 최대한 줄여야 하기 때문에 위의 status를 while문 괄호 ..

IT 프로그래밍 2024.01.09

[따배시] 4.7 printf 함수의 변환 지정자들

printf(제어-문자열, 아이템1, 아이템2, ...) 이런 식으로 나열한다. 예시 int a = 2; printf("%d + %d = %d", 1, a, 1 + a); 형식지정자 printf("%+10.5hi", 256); 변환 사양 %a, %A 부동 소수점 수 , 16진수 %c 한글자 %d 정수, 부호가 있는 10진 %e 부동 소수점수 %f 실수 %O 부호가 없는 8진 %u unsigned 부호가 없는 10진수 정수 %x 부호가 없는 16진수 정수 %% 퍼센트 기호 출력 %s 문자열 변환 지정자의 수식어들 %[flags][width][.precision][length]specifier printf("%+10.5hi", 256); Flags ( - . +, space, #, 0 ) : 어떤 방식으로 ..

IT 프로그래밍 2024.01.05

[따배시] 4.5 기호적 상수와 전처리기

#include #include #define PI 3.141592f #define AI_NAME "Jarvis" //관습 대문자로 선언 int main(void) { const float radius, area, circum; //기호적 상수를 const 붙이면 나중에 변환하지 못한다. 오류 방지 printf("I'm %s.\n", AI_NAME); printf("Please, input radius\n"); scanf("%f", &radius); area = PI * radius * radius; circum = 2.0 * PI * radius; printf("Area is %f\n", area); printf("Circumference is %f\n", circum); return 0; }

IT 프로그래밍 2024.01.05

[따배시] 4.4 strlen() 함수

strlen() 문자열의 길이를 출력해주는 함수를 배웠다. 실행코드 #include #include int main(void) { char str1[100] = "Hello"; char str2[] = "Hello"; //백지수표개념 char str3[100] = "\0"; //null char str4[100] = "\n"; printf("%zu %zu\n", sizeof(str1), strlen(str1)); //null은 글자수에서 뺀다 printf("%zu %zu\n", sizeof(str2), strlen(str2)); printf("%zu %zu\n", sizeof(str3), strlen(str3)); printf("%zu %zu\n", sizeof(str4), strlen(str4)); r..

IT 프로그래밍 2024.01.05

[따배시] 4.3 문자열이 메모리에 저장되는 구조

숫자 하나 1 숫자의 배열 0 1 2 3 4 5 6 7 8 9 문자 하나 'a' 문자의 배열 'H' 'e' 'L' 'L' 'o' '\0' ascii를 사용해서 문자형을 저장한다. '\0' 은 문자열의 끝을 알리는 마침표와 같은 개념이다. 연습 코드 1 int main(void) { int a = 1; int int_arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; printf("%i %i %i\n", int_arr[0], int_arr[1], int_arr[9]); return 0; } 해당 int_arr[10]이라는 배열을 통해서 배열을 만들어준 것으로 %i %i는 C 언어에서 사용되는 형식 지정자(format specifier) 중 하나로, 정수를 출력할 때 사용됩니다. ..

IT 프로그래밍 2024.01.05

[따배시] 4.2 sizeof 연산자 강의 노트

배열 동적할당 string 등이 나온 것이다. 이 강의는 처음 접하기에 조금 어려워서 계속해서 반복해서 봐야 할 것 같다. #include #include struct MyStruct { int i; float f; }; int main(void) { int a = 0; unsigned int int_size1 = sizeof a; unsigned int int_size2 = sizeof(int); unsigned int int_size3 = sizeof(a); size_t int_size4 = sizeof(a); size_t float_size = sizeof(float); printf("Size of int type is %u bytes. \n", int_size1); printf("Size of i..

IT 프로그래밍 2024.01.05

[따배시] 4.1 문자열 입출력하기

본 강의는 홍정모 교수님의 따배시 강의를 요약한 강의 노트입니다. 문자열 입출력하기 이전에 배웠던 문자는 %c로 받아내리는 것을 기억한 것을 바탕으로 코드를 만들었습니다. 그리고 주의해야 할 점은 scanf를 할 때 주소값을 입력받아오는 것이므로 &를 꼭 붙여줘야 한다는 것 잊지 않기 문자로 표현한 오류가 있는 코드 #include int main(void) { char fruit_name; printf("What is your favoraate fruit?\n"); scanf("%c", &fruit_name); // be careful with & printf("You like %c\n!", fruit_name); return 0; } 실행결과 바나나라 입력했는데 B까지만 뜬다. 해당 오류가 뜨는 이유..

IT 프로그래밍 2024.01.05
반응형