본문 바로가기

개발공부/C

(12)
컴파일과 CMake 리눅스계열에서 코드를 작성하여 컴파일하는 명령어 gcc -c -o main.o main.c gcc -c -o foo.o foo.c gcc -c -o bar.o bar.c 컴파일된 오브젝트 파일들을 링커(ld)을 실행해서 실행파일(app.out)을 생성한다. gcc -o app.out main.o foo.o bar.o 위와 같이하면 C언어가 빌드가 된다. 이 후 발전하여 스크립트로 Makefile을 작성하면 컴파일하여 실행파일을 얻을 수 있게 되었다. app.out: main.o foo.o bar.o gcc -o app.out main.o foo.o bar.o main.o: foo.h bar.h main.c gcc -c -o main.o main.c foo.o: foo.h foo.c gcc -c -o fo..
자동변수 #include /* automatic storage class - automatic storage duration, block scope, no linkage - any variable declared in a block or function header */ void func(int k); int main() { int i = 1; int j = 2; { int i = 3; //name hiding //블록 밖에서 선언된 i는 가려지고 3으로 초기화된 변수만을 이야기하게된다. //스택안에 두개의 i가 쌓여있고 '맨 위에것만 보이고 아래에 있는 건 가려진다.' printf("i %lld\n", (long long)&i); int ii = 123; //j is visible here //j는 가려지지않는..
변수의 영역 Storage duration: - static storage duration 프로그램이 시작될때 메모리에 자리를 잡고 끝날때까지 있다. (Note: 'static' keyword indicates the linkage type, not the storage duration) - automatic storage duration 보통 지역변수를 의미하고 스택에 저장된다. - allocated storage duration 동적할당과 관련이 있다. - thread storage duration 멀티쓰레딩
C언어를 가장 쉽고 직관적으로 이해하는 강의 https://www.youtube.com/watch?v=PDM_w2b4UA0&list=PLNfg4W25Tapyl6ahul_8VS_8Tx3_egcTI&index=2&t=0s YouTube 불편을 끼쳐 드려 죄송합니다. 현재 사용 중이신 네트워크에서 많은 요청이 들어오고 있습니다. YouTube를 계속 사용하려면 아래 양식을 작성하세요. www.youtube.com 홍정모교수님의 C언어 첫 강의 링크입니다. 재생목록으로 설정하시고 차근차근 들어보시면 좋을 것 같습니다. 어려운 내용은 그림으로 설명해주셔서 직관적으로 이해하는 데에 큰 도움이 됩니다. 저의 경우 java라는 언어로 it에 입문하게 되어 memory managed가 만능이라고 생각했는데 그런 편견을 깨부수는 계기가 되었으며 프로그래머라면 언제가..
배열을 함수에게 전달해주는 방법 double average(double arr1[], int n) { printf("size = %zd in function average\n", sizeof(arr1)); double avg = 0.0; for(int i= 0; i
printf()함수 #include int main() { printf("\n"); int n_printed = printf("Counting!\n"); printf("%u\n", n_printed); return 0; } Counting! 9 printf()의 리턴값은 출력한 문자갯수이다. float n1 = 3.14;//4 bytes double n2 = 1.234;//8 bytes int n3 = 1024;//4 bytes printf("%d %d %d\n", n1, n2, n3); 스택에 쌓인다 번호순서로. printf()에서 부동소수점이 들어오면 모두 double로 변환한다.(float -> double) 따라서 n3 n2 n1 으로 쌓이고 크기는 4 8 8 로 쌓인다. #include int main() { fl..
기호적상수와 전처리기 #define _CRT_SECURE_NO_WARNINGS #include #define PI 3.141592f #define AI_NAME "Javis" int main() { float radius, area, circum; printf("I'm %s.\n", AI_NAME); printf("input redius\n"); scanf("%f", &radius); area = PI * radius * radius; circum = 2.0f * PI * radius; printf("area is %f\n", area); printf("circumference is %f\n", circum); return 0; } define으로 무언갈 선언할때는 대문자로 쓰는 것이 관습이다. C++에서는 define보다는..
sizeof 연산자 int main() { int a = 0; unsigned int int_size1 = sizeof a; unsigned int int_size2 = sizeof(int); unsigned int int_size3 = sizeof(a); //portable type이식성을 높이기 위함. 오픈소스에서 많이 쓰는 추세이다. 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 int type is %zu bytes.\n", int_size4); printf("Size of float type is %zu bytes.\n",..