일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 배열 소수
- 백준 손익분기점
- 백준 1026번
- 백준 4344번
- 10989 C
- 백준 달팽이
- 백준 1978번
- 10진수 2진수
- C
- 백준 10989
- 백준 2839번
- 십진수 이진수
- 프로그래머스
- 백준 1712번
- 알고리즘
- 백준 2869번
- 16진수
- 백준 세수
- 백준 알고리즘
- 백준
- programers
- 공부
- 백준 10817번
- 비트시프트
- 백준 2775번
- 백준 2751번
- 백준 1003번
- c 백준 4344번
- 2751번 C
- 8진수
- Today
- Total
IT Diary
포인터 본문
intptr_t 와 uintptr_t 차이점
intptr_t의 unsigned한 것이 uintptr_t이다. 이 두타입은 다른 환경으로 이식이 가능하고 안전한 포인터 선언방법을 제공 시스템 내부에서 사용하는 포인터와 같은 크기
대부분의 연산에서는
intptr_t* pi --> 사용 왜? uintptr_t보다 유연하게 작용하기 때문에 사용
uintptr_t의 단점은 캐스팅 없이 다른 타입과 함께 사용 x
uintptr_t은 이식성과 안정성이 필요한 경우에만 사용
주의 ) 포인터를 정수로 캐스팅할 때는 주의 정수 4바이트인 경우 64비트의 포인터 정수를 받으면 데이터 손실나기 때문에
void 포인터와 더하기 연산
void*는 void* = void*+1; 형태가 안됩니다. C표준구문에 적합하지 않기 때문에
그리고 대부분의 컴파일러 형식은 1바이트 크기로 간주하고 풀이를 한다고 합니다. and sizeof 연산자를 이용하면 경고를 발생시킨다. 이와 달리 void 타입에 대한 포인터는 일반적으로 4바이트 크기로 간주
두 포인터의 차는 ptrdiff_t타입으로 반환하는 것도 있습니다.
포인터와 포인터 비교
1. vector 배열 값을 각각 pointer(p0, p1, p2)로 지정했습니다.
2. printf("%d" , p2 > p0) ---> 값의 비교를 통해서 TRUE : 1 FALSE : 0으로 printf에 반환됩니다.
상수와 포인터
C에서 포인터와 const keyword를 같이 사용한다면 강력한 기능 제공합니다.
(주석 500 -> 300 변경)
상수에 대한 포인터 , 비상수에 대한 포인터, 비상수에 대한 상수포인터, 상수에 대한 상수포인터로 분류되어집니다.
(상수포인터는 바로로로로 초기화하기 무조건)
상수에 대한 포인터 비상수에 대한 포인터 비상수에 대한 상수포인터 상수에 대한 상수포인터
const int* pi int* pi int* const pi const int* const pi
<주의>
const int --- > int or const int(conversion)
int ---> int(conversion)
ex)
const int pci = 5;
const int * const * pi = &pci;(0)
but
const int pci = 5;
int *const pi =&pci;(x)
CASTING :
CALLOC 와 MALLOC의 차이점 (초기화 0)
: 배열을 활용하고 0으로 초기화를 해야된다면 CALLOC가 좋습니다. 하지만 0으로 초기화를 +하는만큼 런타임이 MALLOC보다
BUT : MALLOC에서도 초기화하고 싶다면 MEMSET(포인터변수, 초기화값, 사이즈*갯수)
<습관들이기>
(malloc 메모리 할당(HEAP) + 할당되었지는지 확인 + 마지막 free(pi) + pi =NULL)
'language > C' 카테고리의 다른 글
댕글링 포인터와 함수 포인터 (0) | 2020.03.30 |
---|---|
비트시프트 (0) | 2020.03.25 |
브루트-포스법 (0) | 2020.03.25 |
라이브러리 함수 (0) | 2020.03.25 |
문자열 검색, 입출력 버퍼 문제 (0) | 2020.03.25 |