문자열은 항상 널 문자("\0")로 끝난다. 따라서 문자열의 길이보다 항상 1byte 크다. 문자열의 길이는 가변적이며, 그 크기가 클 수 있기 때문에 문자열 상수가 저장된 주소의 값으로 처리 한다. 문자열은 문자열 저장된 시작 주소 값을 가지고 있다. printf()에서 사용하는 서식 지정자 %s 는 '주소부터 널 문자 ("\0") 이전까지 출력해라 란 의미 코드 char a[10] = "apple"; // 문자열의 실제 저장은 apple + null 총 6byte 가 저장된다. printf("%s", a); // %s 의 뜻은 주소부터 null 문자 전까지 printf("%s\n", "apple"); printf("%s\n", "apple" + 2); printf("%s\n", a + 2); // 문..
함수포인터 #include int isOdd(int value) { if (value % 2 != 0) return 1; return 0; } int isEven(int value) { if (value % 2 == 0) return 1; return 0; } void showIf(int* arr, int size, int (*pred)(int)) { // 배열의 시작, 배열의 길이, 함수 포인터 for (int i = 0; i < size; i++) { if (pred(arr[i])) printf("%d", arr[i]); puts(""); } } int main(void) { int a[10] = { 1,2,3,4,5,6,7,8,9,10 }; showIf(a, 10, isOdd); // isOdd =..
함수포인터 함수포인터 : 함수를 저장하는 변수 ( 8byte ) void doNothing(char c) { } int doSomething(double d1, double d2) { return 1; } void dummy(char c) { } 포인터를 선언할 때 리턴타입 부터 써준다. 포인터의 이름을 *ptr 로 정하는데 포인터의 이름을 정할 때는 반드시 (*ptr) 괄호를 친 후 지정해야 한다. void (*ptr)(char); - 리턴타입이 void 고 인수가 char ptr = doNothing; - doNothing을 ptr에 저장해준다는건 -> doNothing의 주소를 ptr에 넣겠다 라는 뜻 즉 ptr 이 doNothing의 주소를 가리키게 된다. doNothing('a').isEqual..
포인터와 함수 Call by value ( 값 전달 ) 복사본 개념 생각 - 기존 값은 변하지 않지만 복사본의 값은 변함 // x 와 y의 값을 바꾸는 함수 void swap(int x, int y) { int temp; temp = x; x = y; y = temp; } int main(void) { // 함수는 복사본을 만드는 것 이기 때문에 swap 을 해준다 해도 기존에 있던 값은 바뀌지 않는다. int x = 3, y = 5; printf("기존 값 => x 는 %d 이고 y 는 %d 이다 \n", x, y); swap(x, y); printf("바뀐 값 => x 는 %d 이고 y 는 %d 이다 \n", x, y); // 포인터 함수로 바꿔서 값 출력 return 0; } // 기존 값도 3, ..
포인터는 주소의 값을 저장하는 변수 p 라는 포인터가 int 데이터라를 기리키고 싶다면 - > int* p 로 선언. 이는 int형 데이터의 주소값을 가진 p 라는 뜻 포인터에 주소값을 집어 넣는 단항 & 연산자 -> 1개의 피 연산자 필요 앰퍼샌드(Ampersand) 연산자, 주소 연산자 ex ) int* p; int a = 5; p = &a; // int a 변수의 주소 값을 저장한다 printf("*p 는 : %d" , *p ) //p안에 저장된 주소안에서 값을 불러 온다. // 이 경우 p의 주소값 안에 저장된 값을 불러 왔기 때문에 a랑 똑같은 정수 5 가 출력 된다 printf("a의 주소 값은 : %p", &a); // a의 주소값을 불러온다. printf("p의 주소 값은 : %p", &p..
자바의 배열과 가장 큰 차이점 c 언어는 배열의 크기를 반드시 지정해야 한다. 자바는 int [] array; 한 뒤 밑에서 정의 해도 에러 안나지만 c 언어는 에러 난다. 성적 평균 int array[2]; int sum = 0; float ave = 0; int arraylength = sizeof(array) / sizeof(int); for (int i = 0; i < arraylength; i++) { printf(" %d번 학생의 점수를 입력 하세요 : ", i+1); scanf_s("%d", &array[i]); sum += array[i]; } ave = sum / arraylength; printf("학생 들의 총 점 수는 : %d 이고, 평균은 %.1f 입니다.", sum, ave); ..
- Total
- Today
- Yesterday
- JPA
- CheckBox
- mircrosoft visual studio
- SCP
- th:selected
- C
- @Builder
- findFirstBy
- 셀렉트박스
- 다중체크박스 처리
- C언어
- 제약조건
- 체크박스
- selectbox
- 다른데서 react
- 받아오기
- reactStart
- commit 에러
- 서버전송
- optional
- React
- @reqeustBody
- @RequestParam
- 아이디
- reactApp
- ID
- 셀프로젝트
- react 시작 오류
- App
- 씹어먹는 C 언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |