본문으로 바로가기
homeimage

포인터

해당되는 글 5
  • thumbnail
    컴퓨터/프로그래밍

    C언어 배열과 포인터 같다? 다르다?

    포인터 때문에 C언어가 어렵다는 분이 참 많습니다. 기계어나 어셈블리어부터 하신 분이라면 쉽게 이해하지만, 머릿속에 메모리를 그려 놓고 생각하는 것이 프로그래밍 입문자로써는 힘들 수 있습니다. 어차피 변수인데 이름에 따라 적당한 값을 넣고 뺀다고 생각하면 되는 것을 포인터라는 것은 이해했다고 싶어도 막상 프로그래밍을 하다 보면 헷갈립니다. 포인터를 정확히 이해하기 위해서는 배열과 어떤 차이가 있는지 알아야 합니다. C언어에서 배열과 포인터가 어떻게 다른지 자세히 알아보겠습니다. C언어 배열과 포인터가 같을까? C언어 코딩의 혼란스러움 더욱이 C언어의 친절함이라고 할까요? 배려 때문인지 모르지만, 배열과 함께 코딩하다 보면 더욱 헷갈립니다. 어? 코딩하는 방법이 배열이나 포인터나 똑같네. 그럼 왜 어렵게 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터함수와 콜백함수 예제 설명

    C언어 포인터 이해하기 시리즈 4부입니다. 컴퓨터에 있는 프로그램을 실행하면 프로그램이 먼저 메모리에 올라옵니다. 즉, 변수뿐만 아니라 프로그램도 메모리를 차지하는 것이죠. 당연한 얘기를 입니다만, 함수도 시작 주소가 있을 것입니다. 포인터가 변수의 메모리 주소를 갖는다면, 함수 주소도 역시 포인터로 받을 수 있습니다. 변수의 주소가 아닌 함수의 시작 주소를 담은 포인터 변수를 통해 호출하는 함수를 포인터 함수라고 합니다. 함수 이름을 직접 호출하는 것이 아니라 함수의 주소를 가지고 있는 포인터 변수로 호출하는 것이며, 포인터 변수는 고정이 아니라 코딩에 따라 여러 함수의 주소로 바꿀 수 있습니다. 즉, 함수 이름을 직접 부르는 것을 정적 호출이라고 한다면, 포인터 변수를 통하는 방법을 동적 호출이라고 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터 쉽게 이해하기 2부

    C언어 포인터 이해하기 1부에 이어 2부 글입니다. 이전에는 배열과 비교하여 포인터에 대해 알아 보았는데요, 이번에는 C언어의 포인터에서 아리까리 헷깔리는 부분에 대해서 알아보겠습니다. 이 글도 포인터를 학습 수준에서 알기는 아는데 정확히 모르는 분을 위한 내용입니다. C언어 포인터 변수 타입별 차이 C언어의 포인터는 주소를 갖는 정수형 변수이지만, 다른 변수처럼 char, short, int, long 등으로 선언합니다. 그렇다면 char *ptr1하고 int *ptr2하고 어떤 점이 다를까요? ptr1보다 ptr2의 변수 크기가 더 클까요? C언어는 변수 사용이 다른 언어에 비해 매우 자유로운데요, C언어로 코딩하다가 다른 언어로 바꾸면 한동안 어려움을 느낄 정도입니다. 다른 언어는 문자 변수로 선언..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터와 배열 쉽게 이해하는 방법 1부

    이 글은 C의 포인터를 학습 수준에서 알기는 아는데 정확히 모르는 분을 위한 글입니다. C언어를 학습하다 보면 대부분 포인터가 제일 어렵다고 합니다. 프로그래밍 경력자도 C언어는 자유도가 높아서 불만인 분이 많습니다. 너무 헷갈린다는 것이죠. 오죽하면 읽기 어렵고 이해하기 어려운 C언어 프로그래밍 대회 IOCCC(International Obfuscated C Code Contest)가 열렸겠습니까. 출품 작을 보았는데, 오우~ 도대체 뭔 소리인지. 당연히 포인터가 들어갑니다. 문제 1) printf( "%c\n", 1["badayak.com"+1]); 아주 간단한 코드인데 결과가 예상되시나요? 포인터 없이 배열로 작성되었지만, 포인터를 알아야 쉽게 이해되는 내용입니다. C언어를 학습하시다 보면 포인터는..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 배열 초기화 함수와 주의사항

    C언어 배열 초기화 함수 두 가지 C언어에서 배열을 초기화할 때 memset()와 bzero() 중 어떤 함수를 사용하시나요? bzero()가 간단해서 편하기도 하지만, 함수 이름이 뭘 하는지 명확해서 소스 코드를 이해하는데 도움을 줍니다. 그러나 이런 장점이 있다고 해도 memset()을 사용하는 것이 좋습니다. 왜일까요? bzero()가 "deprecated 함수"이기 때문인데요, deprecated의 뜻이 "더 이상 사용되지 않는"다는 뜻을 보더라도 하위 호환을 위해 제공되는 것이어서 bzero()보다는 memset()을 사용하는 것을 권합니다. 소프트웨어 기능 중에 "be deprecated"로 언급되어 있다면 더 좋은 것이 나와서 앞으로 이 기능이 없어질지 모른다는 뜻으로 쓰인다는 것을 생각하면..
    최근글
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.