목록프로그래밍/C언어 강좌 (32)
생선이의 잡다한 블로그
안녕하세요 생선스프입니다! 이번 강좌에서는 포인터 변수를 알아보려고 합니다. 포인터 변수에는 일반 변수와는 다르게 메모리의 주소값이 들어가게 됩니다. 그리고 포인터 변수는 자료형 * 변수명 으로 선언합니다.자료형과 변수명 사이에 있는 *의 위치는 중간에만 있다면 어디에 있어도 문제가 없습니다. 이제 아래 코드를 먼저 보겠습니다. 123456789101112#include void main(){ int num1 = 10; int * numPtr; numPtr = &num1; printf("%p %p", &num1, numPtr);} cs 위의 코드는 num1의 주소값을 numPtr이라는 포인터 변수에 넣고 출력하는 코드입니다 즉, 같은 값이 출력되는 것이죠 그럼 이제 이 포인터 변수에 주소를 담았으면 이 ..
안녕하세요 생선스프입니다! 이번 강좌에서는 자료형 변환을 알아보려고 합니다 자료형 변환은 변수의 자료형이 다른 자료형으로 바뀌는 것을 말합니다 #include void main(){ int num1 = 3; float num2 = num1; printf("%f", num2);}cs 위의 코드를 보면 int형의 값을 float에 넣어주고 있습니다. 이런 경우에는 자료형의 크기가 작은 것을 큰 곳으로 넣어주는 것이라 아무런 문제가 없습니다. 하지만 반대로 아래와 같이 자료형의 크기가 큰 것을 작은 곳에다가 넣을때는 경고문과 함께 값이 손실됩니다 #include void main(){ float num1 = 3.01; int num2 = num1; printf("%d", num2);}cs warning C42..
안녕하세요 생선스프입니다! 이번 강좌에서는 구조체를 알아보도록 하겠습니다 제가 인적사항을 기록하고 싶다고 합니다이 인적사항에는 나이, 이름, 키가 있다고 합니다이럴때 구조체를 사용하면 쉽게 관리할 수 있게됩니다사람이라는 큰 범위안에 나이, 이름, 키가 있기 때문이죠 그럼 이제 사용해보도록 하죠 1234struct 자료형의이름{ 변수들};cs 사용은 이렇게 하면 됩니다 아래의 코드를 보죠 12345678910111213#include struct person{ char name[10]; int age; int height;}; void main(){ struct person p1;}cs 우선 이런식으로 선언을 해줄 수 있습니다 이제 안에 값을 넣어줘야겠죠 값을 넣어주는 방법은 두 가지가 있습니다 아래와 같..
안녕하세요 생선스프입니다! 이번 강좌에서는 기존에 있던 자료형에 새로운 이름을 지어줄 수 있는 typedef 를 알아보려고 합니다 typedef 기존자료형 새로운이름 사용방법은 위와 같습니다그럼 직접 사용해보도록 하죠 12345678910#include typedef int 정수; void main(){ 정수 num1 = 1; printf("%d", num1);}cs 이런식으로 사용하게 됩니다 그럼 이번 강좌는 여기서 마치도록 하겠습니다 강좌 읽어주셔서 감사합니다. 공감과 댓글은 생선에게 힘이됩니다!더 많은 C언어 강좌
안녕하세요 생선스프입니다! 이번 강좌에서는 난수를 만들어 보려고 합니다 우선 코드먼저 보도록 하겠습니다12345678910#include #include #include void main(){ srand(time(0)); printf("%d", rand());}cs 이제 설명을 해보죠 난수를 만드려면 rand 함수를 이용합니다하지만 시드값이 바뀌지 않으면 아무리 rand 함수로 난수를 만들어도 값이 바뀌지 않습니다왜냐하면 난수를 만들기 위한 식이 있는데 이 식에 계속해서 같은 값만 들어가면 당연히 같은 값만 나오겠죠!예를들면 3x+1 이라는 식에 2라는 값만 넣으면 아무리 해봐도 7말고는 나올 값이 없죠 그래서 이 시드값을 바꿔주어야합니다그런데 바뀐 시드값이 같으면 안되겠죠그러면 이 시드값은 겹치지않으며..
안녕하세요 생선스프입니다! 이번 강좌에서는 string.h 파일에 포함된 함수인 strcpy 함수를 사용하여 문자열을 복사해 보려고 합니다. 그냥 대입연산자로 하면 된다고 생각할 수도 있습니다.아래와 같이 말이죠 123456void main(){ char s1[10]; s1 = "가나다라";}cs 하지만 이렇게 하면 오류가 발생합니다 왜냐하면 s1에는 문자열의 시작주소가 저장되어있기 때문이죠 그래서 strcpy 함수를 이용합니다 아래와 같이 strcpy(문자열의시작주소값, 입력할문자열) 이렇게 사용하면 됩니다 1234567891011#include #include void main(){ char s1[20]; strcpy(s1, "안녕, 세상아!"); printf("%s", s1);}cs 그런데 strc..
안녕하세요 생선스프입니다! 이번 강좌에서는 문자열의 길이를 알아보려고 합니다. 길이를 알아보기 위해 string.h 에 포함되어있는 strlen 함수를 사용할 것 입니다. 사용방법은 strlen(문자열) 이며 문자열의 길이를 반환합니다. 아래와 같이 코드를 입력해보겠습니다. 123456789#include #include void main(){ char s1[100] = "0123456789"; printf("%d", strlen(s1));}cs 이렇게 실행을 시키면 10이라는 숫자가 출력됩니다 100이 나와야 하는거 아닌가? 라는 의문이 들수도 있지만100이 나오려면 변수의 크기를 출력해야합니다하지만 strlen은 길이가 출력되는 것이므로 10이 나오겠죠!100을 나오게 하려면 sizeof 함수를 사용..
안녕하세요 생선스프입니다! 이번에는 문자열을 비교하는 법을 알아보려고 합니다 그냥 (문자열1 == 문자열2) 이렇게 비교하면 될거라고 생각하실 수 있습니다 한번 직접 해보죠 아래와 같이 코드를 입력해 보겠습니다.12345678#include void main(){ char s1[] = "HELLO"; char s2[] = "HELLO"; s1 == s2 ? puts("두 값이 일치합니다") : puts("두 값이 일치하지 않습니다");} cs 실행을 시켜보면 "두 값이 일치하지 않습니다" 가 나오게 됩니다 그 이유는 s1 과 s2 에는 이 문자열이 저장되있는 주소가 저장되어 있기 때문입니다.즉 s1 과 s2 는 서로 다른 변수이기 때문에 다른 주소값을 가지고 있어 일치하지 않게 됩니다. 그래서 strin..