본문 바로가기

반응형

잡다한 IT/참고용

함수 포인터를 사용하는 이유? 함수가 컴파일 시점이 아니라, 런타임 시점에 결정되어야 하는 경우도 있기 때문에? https://kldp.org/node/133026 참고 사이트 더보기
char* 와 char[] 의 차이점 char* 같은 경우는 const char* 와 같다고 생각하면 된다. char* p="hello"; p[1]='Q' 라고 해서 값을 바꾸려고 한다면 오류가 발생하게 된다. 즉 p 가 READ_ONLY 데이터가 되버린다. 하지만 char p[]="hello"; p[1]='Q' 라고 해서 출력을 하면 hQllo 라고 올바르게 출력되게 된다. https://kldp.org/node/61290 http://zoningout.tistory.com/112 http://skyul.tistory.com/28 참고 사이트 더보기
문자열 상수와 문자열 변수 https://soooprmx.com/archives/4100 http://mintnlatte.tistory.com/223 참고사이트 더보기
define 과 const 의 차이점 크게 const는 #define에 대해 두 가지 의미가 있습니다. 1. 타입을 가지므로 보다 표현 범위와 구조에 대해 명확하게 됩니다. 심지어 class일 수도 있습니다. 2. const에는 메모리가 할당됩니다. 컴파일러로 하여금 그 영역에 덮어쓰는 작업을 막도록 감시하게 해 줄 뿐이지 주소를 직접 건드리면 const의 값 마져 변경시킬 수 있습니다. #define 문에 의한 상수선언은 #define 문의 극히 일부에 해당합니다. 엄밀히 상수를 표현하는데 적합하지 않습니다. 코딩의 편의를 주는데 초점을 두고 있기 때문이거든요. const 는 그에 반해 일반 변수와 생성 및 동작 메카니즘이 같습니다. 컴파일러가 접근을 감독하느냐의 차이 뿐이죠. 초기의 C언어는 const가 없었기 때문에 #define을 이.. 더보기
포인터 종류 정리 http://is03.tistory.com/11 http://stdcobble.tistory.com/81?category=829621 더보기
리틀 엔디안 과 빅 엔디안 http://genesis8.tistory.com/37 참고사이트 더보기
C에서 1바이트씩 읽어오기 unsigned char* ptr 를 이용하면 1바이트씩 읽어올 수 있다. 또는 강제 형변환을 통해서 해결할 수 있다. 아래 예제는 0x12345678 인 temp 변수를 0x78563412 로 변환시키는 코드. 1바이트씩 읽어서 포인터를 이용해서 swap 을 시켰다. 12345678910111213141516171819202122#include int main(){ int temp = 0x12345678; unsigned char* p = &temp; //char* p =(char*)&temp; int v; printf("temp : 0x%x\n", temp); //0x12345678 for (int i = 0; i 더보기
const char *p 와 char* const p 의 차이점 1번째의 경우는 const 가 *p 까지 포함하므로 *p를 변경할 수 없음. p의 값은 변경 가능 2번째의 경우는 const가 p까지만 포함하므로 *p를 변경할 수 있음. 하지만 p의 값은 변경 불가(char const *p라고 쓸 수 있지만, 쉽게 이해하기 위해 char * const p 로 알아두기) 12345678910111213141516171819202122#include int main(){ int val = 7; int tmp = 5; const int* pt = &tmp; // *pt = 3; (X) //pt = &val; (O) int* const pt2 = &tmp; //*pt2 = 3; (O) //pt2 = &val; (X) const int* const pt3 = &tmp; //*p.. 더보기

반응형