프로그래밍 언어/C언어 37

C언어 & && , | ||차이점

안녕하세요 C언어 & vs && , | vs ||차이점에 대해 알아보겠습니다 &와 |는 비트연산자라고 부르고 &&와 ||는 논리연산자라고 부릅니다 비트연산자 or -> |0b1101 | 0b0010 = 0b1111 논리연산자 or -> ||0b1101 || 0b0010 = 1 비트연산자 and -> &0b1101 & 0b0010 = 0 논리연산자 and -> &&0b1101 && 0b0010 = 1 비트연산자는 실제 비트를 비교해서 값을 나타내줍니다논리연산자는 값을 비교해서 1 or 0으로 나옵니다여기서 헷갈리는 부분이 있습니다 논리연산자 and -> &&0b1101 && 0b0010 = 1 코드에서 0은 FLASE고 0이 아닌 값은 TRUE입니다그래서 위에 논리연산자 &&일때 1이 나오는 것 입니다예시..

call by value vs call by reference

안녕하세요 오늘은 call by value vs call by reference 에 대해 알아보겠습니다구글이나 네이버에 call by value vs call by reference를 검색하면 수천개의 글들이 나옵니다그 만큼 중요한 내용입니다 call by value와 call by reference를 굳이 비교하는 이유는 함수를 작성할때 중요합니다 어떤 함수를 호출할때 매개변수로 int형 변수를 넘긴다고하고, +1를 한다고 해봅시다 Colored By Color Scripter™1234567891011121314#include int upupup(int a){ a+=1;} int main(void) { int value = 0; upupup(value); printf("value : %d ",value..

C언어 2차원 배열이란

안녕하세요 오늘은 C언어 2차원 배열에 대해 알아보겠습니다. 먼저 1차원배열을 말해야하는데, 1차원배열은 아래의 그림과 같습니다첫번째 배열원소에 A가 저장되어있고 두번째배열원소에 B가 저장되어있는것을 볼 수 있습니다. 2차원 배열의 모습입니다2차원배열은 행과 열이 존재합니다. 위의 그림은 2행 3열이라고 볼 수 있습니다.(행,열) 이라고 생각하면 되고, 변수를 선언한 형태는 array[2][3] 이런 모습이 됩니다. 이제 예시로 위의 그림을 반복문을 통해서 배열에 원소값을 넣어보겠습니다.참고로 65는 아스키코드로 A입니다 Colored By Color Scripter™1234567891011121314151617181920212223242526272829#include int main(void) { ch..

C언어 포인터에 관해서

안녕하세요. C언어 포인터에 관해서 1) 포인터란? 포인터는 번지에 대한 기호화된 표현을 말합니다. ( 포인터 = 번지 ) 예를들어 int형 변수를 하나 선언하면 아래의 그림처럼 메모리가 할당됩니다 int won; 시스템이 할당한 4바이트는 다른 프로세스들이 할당 받지 못하므로, 안전하게 사용할 수 있습니다 4바이트 모두 이름을 가지고 있고 번지라고 합니다. 2) 포인터 변수란? 포인터는 메모리의 특정 위치를 가리키는 것을 말하고, 포인터 변수는 포인터를 저장할 수 있는 변수를 말합니다. 포인터 변수에는 상수 값이나 문자가 들어가지 못하고 번지만 들어갈 수 있습니다. 3) *,& 연산자란? 포인터 변수를 선언할때는 변수명앞에 *(asterisk)를 붙이고, 포인터변수의 번지수에있는 값을 참조할 때 *를 ..

C언어 배열의 변수명에 &를 붙이면?

안녕하세요 오늘은 C언어 배열에 대해 알아보겠습니다 배열선언이 하나 있습니다int test[1]={1}; test의 값은 0x00이고 test의 주소값(&test)도 0x00이고 test[0]의 주소값도 0x00입니다그러나 두개는 같고 한개는 의미하는 바가 다릅니다 Colored By Color Scripter™123456789101112#include int main(){ int test[1]={1}; printf("%d \n" , test) ; printf("%d \n" , &test) ; printf("%d \n" , &test[0]) ;} 출력창에는 3가지 값이 같게 나와있습니다. 출력한3개는 일단 주소값이니까 *를 붙이면 1이 나와야합니다Colored By Color Scripter™123456..

C언어 특정비트 1로 만들기

안녕하세요 오늘은 특정비트를 1로 만드는 것을 해보겠습니다 0b 0000 0000이라는 값이 있고0b 0000 1000이라는 값으로 바꾸는게 목적입니다이러한 기능은 아트메가를 사용할 때, 특정 포트를 1로 만들 때 주로 사용했습니다 Colored By Color Scripter™12345678910111213141516171819202122232425262728#include void BITSET(int* variable, int bitNr){ *variable |= 1

함수 선언할 때 매개변수에 *넣는거와 안넣는거 차이점.

안녕하세요 오늘은 C언어에서 사용자함수를 정의 할 때 매개변수에 *를 넣을때와 안넣을 때 차이점을 알아보겠습니다 Colored By Color Scripter™123456789101112131415161718192021222324#include int noChange(int i){ i=100*i; return i;} int change(int *i){ *i=200*(*i); return *i;}int main(){ int a= 1; int b= 1; printf("noChange 함수 호출 리턴 값 : %d \n", noChange(a)); printf("change 함수 호출 리턴 값 : %d \n", change(&b)); printf("int형 변수 a 값 : %d \n", a); printf("i..

#define와 #와 ##의 관계

안녕하세요 오늘은 #define와 #,##의 관계에 대해 알아보겠습니다#와 ##은 #define에서 문자열을 이용 할 때 사용합니다 #include#define str(A) #A " 입니다"int main(){printf("%s \n", str(원원이));} -> 출력결과 : 원원이 입니다#define 매개변수 앞에 #을 붙이면 문자가 들어가게 됩니다 #include#define str(Y,M,D) Y##M##Dint main(){printf("%d \n", str(19,07,06));}-> 출력결과 : 190706##을 사용하면 그냥 문자를 연결하게 됩니다

재귀함수란 무엇인가

안녕하세요. 오늘은 C언어 재귀함수에 대해 알아보겠습니다 재귀함수란 자기자신을 다시 호출하는 함수를 의미합니다 Colored By Color Scripter™12345678910111213#include #include void re(void){ printf("re함수 실행 \n"); re();} int main(void){ re();} re함수안에서 re함수 자기자신을 호출하고있습니다"re함수 실행" 이라는 문장이 무한히 나오게 됩니다.. 그래서 함수가 끝나는 조건도 있어야 합니다. Colored By Color Scripter™1234567891011121314151617#include #include int re(int i){ printf("re함수 실행 %d \n",i); i--; if(i == ..

C언어의 메모리 구조

안녕하세요 오늘은 C언어 메모리구조에 대해 알아보겠습니다 프로그램을 실행하게되면 전역변수의 매개변수등은 정해진 장소에 저장되게 됩니다 1. 코드영역실행할 프로그램의 코드가 저장되는 메모리 영역cpu는 코드 영역에 저장된 명령문을 하나씩 가져다가 실행합니다. 2. 데이터영역프로그램이 시작과 동시에 할당되어, 종료 시까지 남아있는 특징의 변수가 저장되는 영역ex)전역변수, static변수 3. 힙 영역프로그래머가 원하는 시점에 메모리 공간에 할당 및 소멸을 하기 위한 영역 4. 스택영역함수를 빠져나가면 소멸되는 변수를 저장하는 영역지역변수,매개변수 * 장점유사한 성향의 데이터를 묶음.관리가 용이해지고, 메모리의 접근이 빨라짐. 예) Colored By Color Scripter™12345678#include..