목록All (98)
개인노트
포인터란 ? 변수의 메모리 주소 값을 저장하기 위해 존재하며 포인터 변수라고도 한다. 1바이트의 메모리 공간을 단위로 하나의 주소 값이 할당되며, 주소 값도 1씩 증가한다. Tip.int num, * pnum; // int형 변수 num과 inut형 포인터 변수 pnum 선언; int main(void) { int num = 5; int * pnum; // 포인터 변수 pnum 선언 pnum = # // num의 주소값을 포인터 변수 pnum에 선언 } 32bit 시스템 에서는 주소 값을 32bit로 표현하기 때문에 포인터 변수의 크기가 4byte이다. 64bit 시스템 에서는 주소 값을 64bit로 표현하기 때문에 포인터 변수의 크기가 8byte이다. 포인트 형(Type) int * char *..
문제 1. 하나의 영단어를 입력 받아서 영단어의 길이를 출력하여라. ex) apple을 입력하면 5가 출력 되어야한다. Q) 11-2_1.c #include int main(void) {char word[100]; // 문자열을 입력 받을 배열int idx = 0; // 배열의 위치 printf("영단어를 입력하세요 : ");scanf_s("%s", word, sizeof(word)); printf("입력받은 영단어 : %s \n", word); while (word[idx] != '\0') {idx++;}printf("영단어의 철자 수 : %d \n", idx); getchar();getchar();} 문제 2. 영단어를 배열에 입력 받은 다음 영단어를 역순으로 뒤집고 출력하여라. 단 널 문자의 위치는..
[ scanf_s 함수를 이용한 배열의 문자열 입력 ] scanf_s 함수에 배열과 문자열을 사용할 때는 몇가지 다른점이 있다. 1. 변수를 입력할 때와 달리 배열의 문자를 입력할 때에는 배열 이름 앞에 &기호를 붙이지 않는다.ex) scanf_s("%d", &num); → scanf_s("%s", str); 2. 문자열을 입력할 때에는 입력받을 인수의 크기를 지정해 주어야 한다.ex) scanf_s("%s", str); [X], scanf_s("%s", str, sizeof(str)); [O] * scanf_s() 함수의 's' 는 security(보안)을 의미하며, 버퍼오버런, 버퍼오버플로우 등 해킹으로부터 보호하기 위해, 보안 기능이 추가된 함수이며,scanf_s("%s", buf, sizeof(b..
[ 배열의 문자열 저장과 널(NULL) 문자 ] C언어는 문자와 문자열의 구분을 위하여 널값을 사용하는데 문자의 끝에 널값이 있으면 문자열이 된다. 배열.c #include int main(void){char str[] = "Tistory BillnairK?"; // 배열 str 선언 및 초기화printf("배열 str의 크기 : %d \n", sizeof(str));printf("널 문자의 문자형 : %c \n", str[13]);printf("널 문자의 정수형 : %d \n", str[13]);str[17] = '!'; // 12번째 배열의 문자 변경printf("문자열 출력 : %s \n", str);char null = '\0', space = ' '; // null = 널 문자, space = ..
2017 정보보호의 날 기념식&국제 정보보호 컨퍼런스 참가 신청 방법 http://onoffmix.com/event/102859
1. 길이가 5인 int형 배열을 선언하여 총 5개의 수를 입력 받은 후 최댓값, 최솟값, 총 합을 구하여라. 문제11-1_1.c #include #include "stdlib.h" void arry(void);int max(void);int min(void);int sum(void);static int arr[5]; int main(void){arry();max();min();sum();system("pause");} void arry(void) {int i; printf("5개의 정수를 입력하세요.\n"); for (i = 0; i < sizeof(arr) / sizeof(int); i++)scanf_s("%d", &arr[i]);} int max(void) {int i=0, max=arr[i], a..
문제) 두 개의 정수를 입력 받아서 최대 공약수를 구하여라. 도전1-3.c #include #include "stdlib.h" int GCM(int, int); int main(void) {int num1, num2; printf("두 개의 정수를 입력하세요. \n");scanf_s("%d", &num1);scanf_s("%d", &num2); GCM(num1, num2); system("pause"); } int GCM(int num1, int num2) {int i, small, su=1; // su = 최대공약수 if (num1 < num2)small = num1;elsesmall = num2;for (i = 2; su < small ; NULL) {if (num1 % i == 0 && num2 %..
1차원 배열 [ 배열의 선언 ] int tistory [5];→ 자료형이 int이고 이름이 tistory인 배열을 5개 선언→ 배열은 0부터 시작한다. 배열이 5라면 0~4 [ 배열을 선언하면서 초기화 ] 1. int tistory[5]={1,2,3,4,5};→ 5개의 배열을 선언하고 0 부터 4번째 배열에 1,2,3,4,5를 하나씩 넣는다. 2. int tistory[]={1,2,3,4,5};→ 배열의 길이를 선언하지 않고 값을 초기화 해도 초기화 한 값들의 갯수를 보고 길이정보는 채워진다.즉, 1번과 2번은 같은 결과가 나온다. 3. int tistory[5]={1,2};→ 이같은 경우는 배열은 총5개이지만 2개의 값만 초기화가 되었다. 이렇게 된다면 앞의 첫번째 배열과 두번째 배열에 1과 2라는 값..
문제. 두 개의 정수를 입력받아서 그 사이 수들의 구구단을 구하여라.ex) 두 수 2와 4를 입력받으면 2,3,4의 구구단을 출력하고, 순서를 바꾸어 4와 2를 입력받을 때에도 같은 결과값을 출력해라. 도전1-2.c #include #include "stdlib.h" void dosu(int, int);int gugu(int, int);int max, min; int main(void) {int a, b; printf("첫번째 정수 입력 : ");scanf_s("%d", &a);printf("두번째 정수 입력 : ");scanf_s("%d", &b); dosu(a,b);gugu(a,b);system("pause");} void dosu(int a, int b) {if (a > b) {max = a;min..