본문 바로가기

Other Programming

[C] void 포인터 / NULL 포인터 #include void main() { int i=1234; void *vp; vp=&i; //printf("%d\n",*vp); printf("%d\n",(int *)vp); printf("%d\n",*(int *)vp); if (func()==NULL) { // 에러 처리 } else { // 하고 싶은 일 } } 더보기
[C] C는 포인터에 대한 증감 연산을 산술 연산과는 달리 아주 특수하게 수행한다. /포인터 연산 예 제 : PointerType2 #include void main() { int ar[]={1,2,3,4,5}; int *pi; pi=ar; printf("첫 번째 요소 = %d\n",*pi); pi++; printf("두 번째 요소 = %d\n",*pi); } 크기 5의 ar 배열을 정의했으며 pi=ar 대입문으로 pi가 ar 배열의 선두 번지를 가리키도록 했다. 배열명 자체는 배열의 시작번지를 가리키는 포인터 상수이므로 pi가 이 포인터 상수를 대입받을 수 있다. pi=&ar이 아니며 이렇게 대입해봐야 대입되지도 않음을 주의하도록 하자. pi가 ar 배열의 시작 번지, 그러니까 ar[0]의 번지를 가리키고 있는 상황이다. 이 상태에서 *pi를 읽으면 pi 위치에서 4바이트를 읽을 것이며 이 값을 출.. 더보기
[C] AlphaNum 문제 winapi.co.kr 문제 AlphaNum 영문 소문자로 구성된 긴 문장을 입력받아 이 문자열 내의 각 알파벳 문자 개수를 구해 출력하라. 예를 들어 alpha가 입력되었다면 a:2, b:0, .... h:1, ... l:1, .... p:1이 출력되어야 한다. 각 문자의 출현 회수를 저장할 배열이 필요하다. #include void main() { char alphabat[26] = { 'a','b','c','d','e','f','g','h','i','j','k','l', 'm','n','o','p','q','r','s','t','u','v','w','x','y','z' }; char input[100]; int totalCount = 0; scanf("%s", input); int k = sizeo.. 더보기
[C] 배열명이 단독으로 사용되면 배열의 시작번지값을 가지는 포인터 상수이다. /배열명이 그 자체로 포인터이므로 scanf의 인수로 넘길 때 &연산자를 붙이지 않는다 배열명이 단독으로 사용되면 배열의 시작번지값을 가지는 포인터 상수이다. 이 문장이 선뜻 이해가 가지 않겠지만 배열의 본질을 이해하는 아주 핵심적인 문장이므로 음절 하나 틀리지 않고 그대로 외워야 할 정도로 중요하다. 배열명이 단독으로 사용된다는 말은 첨자없이 배열의 이름만 적는다는 뜻이다. ar[0], ar[1]과 같이 첨자와 함께 쓰면 배열 요소 변수지만 ar과 같이 배열명만 쓰면 이 값은 배열의 시작번지를 가리키는 포인터값이 된다. 배열명이 포인터라는 것을 확인해 보기 위해 다음 문장을 실행해 보자. #include void main() { char str[6] = {'K', 'o', 'r', 'e', 'a'}; printf("%s\n",str); printf("%c\n",str[2]); } 크기 6.. 더보기
[C] 배열을 정의 할때 sizeof 연산자를 사용하면 유지보수가 쉬워진다 #include void main() { int arScore[5]; int i; int sum; for (i=0;i 더보기
[C/C++] ::변수 C#의 this 키워드와 비슷한 개념이라고 보면 될듯 / 지역변수 전역변수 구분 C 언어에서는 전역변수와 지역변수의 이름이 중복될 때 지역변수가 선언된 함수에서 전역변수를 참조 할 수 없다. 위 예의 func 함수는 전역변수 i를 읽거나 참조할 수 없는데 전역 i가 지역 i에 의해 완전히 가 려져 있기 때문이다. 변수가 아직 존재하지만 가려져 있어 쓸 수 없는 상태이며 이 상황을 가시성 (Visibility) 이 없다고 표현한다. 그러나 C++에서는 가려져 있는 전역변수를 참조할 수 있는 별도의 범위 연산자 :: 을 사용하면 전역 i를 읽을 수 있다. func 함수의 끝에 다음 코드를 추가해 보자. printf("global i=%d\n",::i); ::i라는 명칭은 전역변수 i라는 뜻이다. :: 연산자에 대해서는 차후에 C++에서 다시 다루게 될 것이다. 통용 범위 규칙은 아주 상.. 더보기
Wrox tutorial VC 6.0++ / Wrox Press C++ Tutorial 더보기
[C] Turboc 터보c 터보씨 헤더파일 닷넷 추가 디렉토리 참고 / turboc.h 파일 포함 더보기