프로그래밍 언어 73

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언어로 상승엣지,하강엣지 기능 구현하기

안녕하세요 오늘은 C언어로 상승엣지,하강엣지 기능을 구현해보겠습니다. 그리고 C언어뿐만아니라 다른 개발환경에도 적용 할 수 있습니다 ------상승엣지------ 상승엣지란 어떤 값이 0에서 1로 변할때를 의미합니다. 위의 그림에서 빨강동그라미의 시점을 알려주는 겁니다 사용예시) 어떤 버튼을 1번 누르면 값이 1 증가하는 기능 int main() { int btn; int num; while(1) { if(btn == 1) { num++; } } } 위의 코드에서 btn변수가 버튼을 눌렸을때 변하는 변수라고 가정하고 (버튼이 안눌리면0, 버튼이 눌리면1) 유저는 버튼을 누릅니다. btn이 1이겠죠 버튼을 누르고있는 시간에따라 num이 계속 증가하게 됩니다 원래 하려고했던 버튼을 1번누르면 값이 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..

센서의 전류값 계산하기(직선의 방정식 코드로 나타내기)

안녕하세요 오늘은 센서의 전류값 계산하기(직선의 방정식 코드로 나타내기)를 해보겠습니다 센서의 전류값을 구한다는 의미의 예시입니다예를들어 센서로부터 센싱한 값을 전류로 입력받는다고 가정해봅시다센서의 전류가 10000mV 면 값이 100bar고센서의 전류가 0mv면 값이 0bar입니다그럼 이제 센서에서 값을 3200mV입력받으면 몇bar인지 궁금합니다 직선의 방정식 공식은 y=m(x-x1)+y1 입니다 m=(y2-y1)/(x2-x1) (기울기)(x1,y1), (x2,y2) 두 점 Colored By Color Scripter™123456789101112131415161718#include double outputY(double x,double x1,double x2,double y1,double y2){ ..

#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 == ..