본문 바로가기

Study107

C언어 - sacnf의 &(주소연산자) scanf에 &(주소연산자)가 들어가는 이유. scanf에 입력을 받을 때에는 앞서 선언한 변수와 서식문자(%d 같은)에 의해 메모리 공간이 미리 할당되어 있어야 한다. 예) scanf("%d", &num); %d : 10진수 정수(서식문자) &num : 변수 이때, 입력받는 값을 저장하기 위해서는 할당된 메모리 공간을 지정해주어야 한다(10진수 정수, 변수 num에 저장하라고 했지만 변수 num이 어느 위치에 존재하는지 모르기 때문이다). 따라서 변수 num이 있는 메모리의 주소를 알려주어야 하는데, 이 때 사용하는것이 &(주소연산자)이다. 주소연산자를 통해 해당 변수 num의 할당된 메모리 공간이 주소를 알려주기 때문에 입력이 가능하다. 2018. 12. 17.
C언어 - int로 선언한 변수에 입력한 값을 char로 출력 할 경우 오류가 나는 이유. 1 2 3 4 5 6 7 8 9 10 11 12 13 #include int main() { int num; // int를 char로 고쳐주면 해결된다. printf("입력 값 : "); scanf("%c",&num); printf("\n"); printf("아스키 코드 : %d\n",num); return 0 ; } Colored by Color Scripter cs 입력 : A 출력 : -0515387999 쓰레기 값이 출력되는 이유는? num의 자료형이 int형 4바이트, 출력하는 값의 형식지정자는 %c(char)이다. int형 변수 num을 지정할 때, 초기화를 해주지 않았기 때문에 num에는 쓰레기 값이 들어가 있다. 즉, 4바이트 메모리 공간에 쓰레기값이 꽉 차있는것이다. 이 때, num에 값.. 2018. 12. 17.
C언어 - 배열과 스택, 버퍼 오버플로우 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include int main() char ch1[2]; char ch2[2]; char ch3[2]; printf( "문자 입력\n" ); scanf( "%s", ch1); // scanf의 오류때문에 scanf_s를 쓰는경우엔 'scanf_s("%s",ch1,버퍼의 크기);'와 같이 3개의 인자를 넣어주어야 한다. - _s가 오버플로우 현상을 잡기위해 만든것이므로 _s에선 오류가 발생하지 않는다. scanf( "%s", ch2); // scanf_s와 같이 _s를 쓰는 연산자는 설정에서 sdl체크를 해제해주면 _s없이 사용 할 수 있다. scanf( "%s", ch3); printf( "ch1 : %s .. 2018. 12. 17.
C언어 - scanf_s의 사용법과 예제 요즘엔 scanf의 사용을 금지하는 컴파일러가 많다(오류를 뿜뿜한다던가...). 보안상의 문제가 많다고 하니 scanf_s를 사용하길 권장한다. scanf_s는 scanf와 사용방법이 많이 다르지 않다. scanf_s에서는 scanf에서 아래와 같이 뒤쪽에 변수의 길이만 추가해주면 된다. scanf_s("서식문자 및 문자열", {변수}, {변수의 길이}) 예) scanf_s("%s",a,sizeof(a)); 사용 예) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include int main(void ) { char a[7]; int i=0; printf( "입력할 값은? : " ); scanf_s( "%s",a,sizeof (a)); /*.. 2018. 12. 13.
C언어 - 정수형의 크기 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include int main(void ) { int num1 = 10; int num2 = 20; int num3 = 30; int num4[3] = { 10,20,30 }; printf( "int = %d byte\n", (int )sizeof( int)); printf( "&num1 = %d, &num2 = %d, &num3 = %d\n" , &num1, &num2, &num3); printf( "num4[0] = %d, num4[1] = %d, num4[2] = %d\n" , &num4[0], &num4[1], &num4[2]); } Colored by Color Scripter cs 출력 자료형의 크기에 대해 얕게 배운 사람.. 2018. 12. 10.
C언어 - const의 포인터 이용 const : const 키워드를 갖는 것(변수 등)을 상수화한다. const int * ptr = &num 과 int * const ptr = &num 등 여러가지 비교(int num = 10 이라 가정) 1. const int * ptr(=int const *ptr) = &num (포인터 앞에 const가 올 때) - 포인터(*ptr)를 상수화하는 것으로, 포인터(*ptr)를 이용한 연산을 수행 할 수 없다. 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include int main(void ) { int num1 = 10; int num2 = 20; const int * ptr = &num1; // 포인터(*ptr)를 상수화. printf(.. 2018. 12. 10.
[링크] 파이썬2 vs 파이썬3 파이썬2 vs 파이썬3 http://leebaro.tistory.com/28 버전이 변함에 따라 피곤해지는건 만드는 개발자나 쓰는 개발자나 똑같은것 같다. 2017. 9. 23.
REST API란 무엇인가...? 계속 주변에서 REST REST 하는데....무슨 개념인지 잘 몰라서 'REST API란 무엇인가'를 찾아보다가...한번 보면 도움이 될만한 사이트들이 있어서 저장..!- REST API 제대로 알고 사용하기https://meetup.toast.com/posts/92?utm_content=bufferae079&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer - REST(Representational State Transfer) APIhttps://poiemaweb.com/js-rest-api - REST API란https://hyunalee.tistory.com/1 - RESTful 이란?https://nesoy.github.io/articl.. 2017. 9. 23.