1회-7번) 다음 C언어로 구현된 프로그램을 분석하여 5를 입력했을 때 그 실행 결과를 쓰시오. #inlcude int func(int a) { if(a (2) % (3) / 1회-17번) 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. #include int isPrime(int number) { for(int i=2; i
C언어
구조체도 포인터를 선언할 수 있으며 구조체 포인터에는 malloc 함수를 사용하여 동적 메모리를 할당할 수 있다. 형식은 아래와 같다. struct 구조체이름 *포인터이름 = malloc(sizeof(struct 구조체이름)); #define_CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지 #include #include // strcpy 함수가 선언된 헤더 파일 #include // malloc, free 함수가 선언된 헤더 파일 struct Person { // 구조체 정의 char name[20]; // 구조체 멤버1 int age; // 구조체 멤버2 char address[100]; // 구조체 멤버3 }; int main() { struct Per..
1회-2번) 다음 C 언어의 출력값을 작성하시오. 🤔 #include int main() { char a[] = "Art"; char *p = NULL; p = a; printf("%s\n", a); printf("%c\n", *p); printf("%c\n", *a); printf("%s\n", p); for(int i=0; a[i]!='\0'; i++) printf("%c", a[i]); } 더보기 답: Art A A Art Art 풀이 혼자 풀어보려고 끙끙댔으나.. 포인터 너무 어렵다. *p, *a 출력값이 A가 나오는 것이 이해가 잘 가지 않아서 2회차 3번 문제 이후에 문제 풀이를 봤다. 우선, a라는 배열이 1000번째 기억장소를 할당받았다고 가정하자. char *p = NULL은 문자형 포인..
1. 인덱스로 문자 접근하기#include int main() { char *s1 = "Hello"; // 포인터에 문자열 Hello의 주소 지정 printf("%c\n", s1[1]); // e: 인덱스의 1(두 번째)의 문자 출력 printf("%c\n", s1[4]); // o: 인덱스 4(다섯 번째)의 문자 출력 printf("%c\n", s1[5]); // 문자열 맨 뒤의 NULL(\0) 출력, NULL은 화면에 표시 X return 0;}s1[1]처럼 문자열 포인터를 인덱스로 접근했고,printf에서 서식 지정자 %c로 문자를 출력했다.이렇게 문자열 포인터를 인덱스로 접근하면 char와 같기 때문에 %c로 출력할 수 있다. 문자열 포인터에서 문자열 맨 뒤의..
문자열은 char 포인터 형식으로 사용한다. char *변수이름 = "문자열"; 형식은 위와 같다. 예제를 통해 알아보자. #include int main() { char c1 = 'a';// 변수에 문자 'a' 저장 char *s1 = "Hello";// 포인터에 문자열 "Hello"의 주소 저장 printf("%c\n", c1);// a: %c로 문자 출력 printf("%s\n", s1);// Hello: %s로 문자열 출력 return 0; } 문자 char는 'a'처럼 글자가 하나만 있는 상태를 뜻하고, 문자열 char *은 "Hello"처럼 글자 여러 개가 계속 이어진 상태를 뜻한다. 👉 문자는 1바이트 크기의 char에 저장할 수 있지만 문자열은 크기가 1바이트를 넘으므로 char에 저장할 ..
방법 C언어에서 문자열은 문자 배열에 저장할 수도 있다. 형태는 아래와 같다. char 배열이름[크기] = "문자열"; // 예시 char s1[10] = "Hello"; 위처럼 코드를 작성하면 크기가 10인 char형 배열을 선언하고 문자열 Hello를 할당한 것이다. 문자열 리터럴을 포인터에 할당하는 방식과는 달리 문자열을 배열에 저장하는 방식은 배열 요소 하나하나에 문자가 저장된다. 아래 사진처럼 배열 안에 일렬로 나열된 문자가 모여 문자열을 이루게 된다. 문자열의 맨 뒤에 NULL이 들어가게 된다. 주의점 1) 배열을 선언한 즉시 문자열로 초기화해야 한다는 것이다. 배열을 미리 선언해놓고 문자열을 나중에 할당할 수는 없다. char s1[10]; s1 = "Hello"; 위와 같이 코드를 작성하면..