본문 바로가기

분류 전체보기

(295)
c언어 포인터와 배열 #include int main(void) { int num = 7; int* pnum; pnum = # ........ } 포인터 변수란? 메모리의 주소 값을 저장하기 위한 변수이다. 그러면 여기서 포인터 변수는 *pnum 일까, pnum일까? 바로 pnum이다. 위 코드를 보면 num의 주소 값을 포인터 변수인 pnum에 저장하고 있는 것을 볼 수 있다. 이러면, num의 시작 번지 주소 값이 포인터 변수 pnum에 저장이 되고, 이를 포인터 변수 pnum이 int형 변수 num을 가리킨다.라고 할 수 있다. 그렇다면 *pnum은 무엇일까? 우선,* 연산자는 포인터가 가리키는 메모리 공간에 접근할 때, 사용하는 연산자이다. 그러므로, *pnum은 포인터 변수 pnum이 가리키는 메모리 공간인 ..
코드업 1045번(나눈값??) 정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보는 문제이다. (단 0
코드업 1044번(큰수를 입력받을때) 정수를 1개 입력받아 1만큼 더해 출력해보는 문제이다. (단, -2147483648 ~ +2147483647의 범위로 입력된다.) 나의 첫번째 오답 풀이이다. 입력값이 2147483647이고, 여기서 1을 더하여 출력을 하면 끝자리만이 8로 바뀌는 것이 아니라 앞에 -가 붙고 끝자리가 8로 바뀌는 것을 알 수 있다. 그 이유는 int형의 값의 표현 범위를 넘어서 거꾸로 한 바퀴를 돌아왔기 때문에 이와 같은 출력 값이 나오게 되는 것이다. #include int main(void) { int A; scanf_s("%d", &A); printf("%d", ++A); return 0; } 나의 두 번째 풀이인데, 이 문제에서의 입력값은 대략 21억의 엄청 큰 수이다. 이런 큰 수의 경우 int형, 즉 일반적인..
코드업 1046번(자료형의 변환) 정수 3개를 입력받아 합과 평균을 출력해보는 문제이다. 단, -2147483648 ~ +2147483647 -2147483648 ~ +2147483647는 값의 표현 범위를 나타내는데, int형(4바이트) 이나 long형(4바이트)이 이에 해당한다. int형 정수를 입력받으라는 소리인 것 같은데, 굳이?라는 생각이 들기도 하지만 정수 자료형 중 자주 쓰는 char형(1바이트, -128 이상 +127 이하)도 있으니 그런 것이라 생각한다. 첫 번째 나의 풀이인데, 단순한 문제에 비해 너무 복잡하게 푼듯한 느낌이든다. 그리고 avr을 구하는 과정에서 3으로 나누었는데, 잘못된 풀이라는 결과가 나왔다. 이는 3.0으로 나누어 주면 해결이 되는데, avr과 arr [ ]의 배열 요소들의 자료형이 일치하지 않아 ..
구조체의 비교 #include struct point { int x; int y; }; int main(void) { struct point p1; struct point p2; p1.x = 30; p1.y = 10; p2.x = 30; p2.y = 10; if (p1 == p2) { printf(" p1과 p2가 같습니다."); } return 0; } 이 코드는 오류가 발생하는데, 그 이유는 : 구조체는 아무리 같은 구조체 타입(struct point)이라 하더라도, 두 개의 변수 자체를 직접 비교하는 것은 불가능하다.!! #include struct point { int x; int y; }; int main(void) { struct point p1; struct point p2; p1.x = 30; p1.y ..
구조체의 활용 사각형 넓이 둘레 구하기 들어가기에 앞서, 학생정보 시스템을 구현한다고 해보자. 학생이라는 틀이 필요 그 틀 안에는 학번, 이름, 학점 등이 들어가 있을 것이다. struct student { int number; char name [10]; double score; }; 의 형식으로 구조체를 만들 수 있다. 따로따로 이름 학번 점수를 조합해서 학생정보를 만들 수 있는데 왜, 구조체를 만들까? 그 답은 관리가 편하다는 이유가 있다. 실제로 학생정보 시스템 구현한다고 했을 때 서버를 구축하고 그 안에서 데이터베이스를 만들 것이다. 데이터 베이스는 일반적으로 테이블을 만들어 데이터 관리를 한다. 테이블에는 학번 이름 학점 등 들어가 있고, 실질적으로 프로그래밍 상에서 서버에 접근해서 데이터베이스에서 학번 이름 학점을 일대일 매칭 해..
c언어 구조체 이해 우선 구조체는 객체 지향 프로그래밍 언어에서 말하는 클래스의 모체가 되는 것으로 여러 개의 자료형을 묶어서 새로운 자료형을 만들 수 있는 방법이다. 학생정보 구조체 만들기 #include #include struct student { >>하나의 구조체를 만들어줌 int number; char name[10]; double grade; grade>>학점 }; int main(void) { struct student s; s.number = 20150001; strcpy(s.name, "홍길동"); s.grade = 4.5; //여기까지 s라는 이름의 student구조체 변수는 이런 식으로 각각의 변수에 대한 값을 가지게 된 것이다 printf("학번: % d\n", s.number); printf("이름:..
배열과 포인터의 연관 및 다양한 문자열 함수 문자열은 c언어에서 다양한 문자 표현을 나타내기 위해 사용한다. 내부적으로 문자열은 char자료 타입의 배열로 이루어져 있으며 이것은 포인터와 같다고 할 수 있다 즉, 배열은 내부적으로 포인터와 동일한 구조이다. char array[10];이 선언된 후 10개 바이트만큼 우리 메모리에 자리 잡았다고 생각하면 된다. #include int main(void) { char input [1001]; gets(input); int count = 0; while (input [count]!= '\0') { count++; } printf("입력한 문자열의 길이는% d입니다", count); //문자열의 길이 맞는 표현 ㅇ printf("입력한 문자열은 % s입니다.", input); return 0; } 예를 들..