C 41

gets() - 문자열 입력

gets()는 Visual Studio 버전에 따라서 지원하지 않을수 있다. 지원한다면 표준 입출력 함수 이므로 stdio.h 헤더파일의 선언이 필요하다 표준입력에서 문자열을 입력받아 사용자가 전달한 메모리에 저장하는 함수 >> 표준입력으로 들어온 문자열을 개행한 부분 앞까지 char* 타입의 문자열로 저장해주고, 자동으로 문자열 맨 끝에 '\0'을 넣어서 문자열을 완성 gets() 가 "문자열" 을 감지하는 기준은 개행(\n) 입력된 문자열을 char* , char[]로 저장해줌 Enter키를 누르기 전까지 공백을 포함한 모든 문자열을 입력 받음 gets(입력 받는 값의 주소); #include int main(){ char str[100]; gets(str); // char*, char[] print..

C/C 2022.10.05

C 포인터 예제

#define _CRT_SECURE_NO_WARNINGS #include int opration(int a, int b, char n); void opration2(int a, int b, char n, int res); void opration3(int a, int b, char n, int *res); int main() { //포인터와 변수 char ch = 'A'; char* p = NULL; p = &ch; // 주소값을 대입 //char* p = &ch; printf("ch가 가지는 값 : %c\n", ch); printf("ch 주소 값 : %p\n", &ch); printf("p가 가지는 값 : %p\n", p); printf("p가 참조하는 주소의 데이터 값 : %c\n", *p); //..

C/C 연습 2022.10.05

C 포인터 배열 접근 1

길이가 5인 배열 arr 선언 1,2,3,4,5 초기화 포인터 변수를 통해 모든 배열요소 2씩 증가 int main() { int arr[5] = { 1, 2, 3, 4, 5 }; int* ptr = arr; for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { printf("%d ", *(arr + i)); } printf("\n"); for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { *(ptr++)+=2; } for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { printf("%d ", *(arr + i)); } } #include int main() { int arr[..

C/C 연습 2022.10.04

sizeof 연산자 O 함수 X

자료형(타입)의 크기를 바이트(byte) 단위로 구하는 sizeof 연산자 컴파일러가 수행하고 CPU가 실행하지 않는 특수한 연산자 sizeof 표현식 sizeof(자료형) sizeof(표현식) #include int main() { int num = 0; int sz1,sz2; sz1 = sizeof(num); // 변수 num의 자료형 크기를 구함 sz2 = sizeof num ; //괄호가 필수가 아니다. printf("num 크기: %d byte\n", sz1); printf("num 크기: %d byte\n", sz2); } sizeof int와 같은 형식으로는 자료형의 크기를 구할 수 없다 >> sizeof(자료형) 형식사용 sizeof 연산자는 피연산자의 자료형에 대한 연산 >> sizeof..

C/C 2022.10.04

scanf() 표준 입력 함수

표준 입력(콘솔에 입력) 으로 사용자의 입력을 받아 입력 값을 변수에 저장 헤더파일 stdio.h 정수를 입력 #define _CRT_SECURE_NO_WARNINGS #include int main(){ int num; printf("정수를 입력"); scanf("%d",&num); printf("%d\n",num); } scanf( ) 첫번째 인수에 " " 안에 서식지정자를 넣어서 입력받는 값 형태를 지정 두번째 인수에 입력 값을 저장할 변수를 넣음 주의 점은 변수 앞에 &을 붙여 주어야함 (주소 값) scanf("%d",&num); //입력 받아서 변수에 저장 정수 두개 입력 #define _CRT_SECURE_NO_WARNINGS #include int main(){ int num1,num2; p..

C/C 2022.10.04

배열 1 - 배열의 선언과 접근 , 초기화

배열은 같은 자료형의 변수를 일렬로 늘어놓은 형태, 반복문을 사용하여 반복되는 값을 처리 배열의 선언 자료형 배열이름[크기]; 선언과 초기화 자료형 배열이름[크기] = { 값, 값, 값 }; 배열의 크기를 생략 자료형 배열이름[] = { 값, 값, 값 }; 초기화를 하지 않을 때는 생략할 수 없다 int numArr1[] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 }; // 배열의 크기 생략 int numArr2[]; // 컴파일 에러 #include int main() { int arr[10] = { 11,22,33,44,55,66,77,88,99,110 }; printf("%d", arr[0]); // 11. printf("%d", arr[5]); // 55 pri..

C/C 2022.10.04

포인터 pointer 4 - 이중 포인터, 주의할 점

이중 포인터 포인터의 메모리 주소를 저장하는 포인터의 포인터 포인터를 선언 할떄 **을 사용하면 포인터의 포인터 (이중포인터) #include int main() { int* numPtr1; //단일 포인터 int** numPtr2;//이중 포인터 int num1 = 10; numPtr1 = &num1; //numPtr1 에 num1의 메모리 주소 저장 numPtr2 = &numPtr1; //numPtr2 에 numPtr1의 메모리 주소 저장 printf("%d\n", **numPtr2); //포인터를 두번 역참조하여 num1의 메모리 주소에 접근 } 포인터도 실제로는 변수이기 때문에 메모리 주소를 구할수 있다. 포인터의 메모리 주소는 일반 포인터에 저장할수 없다 >> int** numPtr2; 와 같은..

C/C 2022.10.04

strlen(); 문자열의 길이

string.h 헤더 파일에 선언 필요 >> #include strlen(문자열 포인터); strlen(문자 배열); >> 문자열의 길이 반환 #include #include // strlen 함수가 선언된 헤더 파일 int main() { char* a = "Hello"; // 포인터에 문자열 Hello의 주소 저장 char arr[10] = "Hello"; // 크기가 10인 char형 배열을 선언 초기화 printf("%d\n", strlen(a)); // 5 printf("%d\n", strlen(arr)); // 5 } strlen(a)와 같이 strlen 함수에 문자열 포인터를 넣으면 문자열의 길이가 반환 strlen(arr)와 같이 strlen 함수에 문자열이 들어있는 배열을 넣으면 배열 안..

C/C 2022.10.03

포인터 pointer 3 - void 포인터

1. void 포인터 자료형이 정해지지 않은 포인터 >> void * 포인터 이름 int main() { int num1 = 10; char c1 = 'a'; int* numPtr1 = &num1; char* cPtr1 = &c1; void* ptr; // void 포인터 선언 //포인터 자료형이 달라도 컴파일 경고가 없음 ptr = numPtr1; printf("numPtr1 : %p\n", numPtr1); printf("ptr1 : %p\n", ptr); ptr = cPtr1; printf("cPtr : %p\n", cPtr1); printf("ptr : %p\n", ptr); numPtr1 = ptr; cPtr1 = ptr; ptr = numPtr1; printf("%d", *ptr); //컴파일..

C/C 2022.10.03