이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[C] 포인터와 함수

  • 2022.04.13 16:04
  • Programming Language/C
반응형

 

 

 

배열을 할당받은 변수명은 포인터 타입이다.

함수를 통해 배열을 전달하면, 배열 자체가 전달될까 아니면 포인터가 전달될까?

 

 

함수의 인자로 배열을 입력하면 주소 즉, 포인터가 복사돼 전달된다.

 

지난번에 스택프레임에 대해 배울 때 메모리 스택에서 활성화 된 값들만 조작할 수 있다고 배웠는데, 포인터를 사용하면 비활성화된 스택 프레임에도 접근할 수 있다.

 

 

그런데, 배열을 포인터로만 전달하게 되면 배열의 길이에 대한 정보는 전달하지 못한다.

배열에 있는 요소들의 합을 구하는 함수를 작성하고 싶은데, 이런 경우는 어떻게 해야 할까?

 

 

함수로 배열을 넘겨줄 때 배열의 길이를 함께 지정해 줄 수 있다.

일단 배열을 받는 함수는 정수 포인터 타입의 변수로 받아오고, 배열의 길이에 대한 정보인 len을 추가로 받는다.

 

물론, 문자열 배열의 경우는 문자열의 마지막 부분이 '\0'로 나타나기에 굳이 길이를 함께 전달할 필요가 없다.

 

 

 

 

배열을 인자로 받을 때 포인터 변수로 받아도 좋고, 배열 그 자체로 받아도 좋다. (int p[]가 선호됨)

 

혹시 그럼 이거도 되나?

 

int arr[3] = {1,2,1};
int arr2[] = arr;

 

 

위의 코드는 동작하지 않는다. (포인터 변수로 받는 건 가능)

문자열을 배열로 담을 때 부터 계속 나오던 예시인데, 배열의 이름은 상수라 변경할 수 없다.

 

반응형

'Programming Language > C' 카테고리의 다른 글

[C] const  (0) 2022.04.13
[C] Call By Value  (0) 2022.04.13
[C] 문자열과 포인터  (0) 2022.04.01
[C] 포인터 연산  (0) 2022.04.01
[C] 배열과 포인터  (0) 2022.04.01

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [C] const

    [C] const

    2022.04.13
  • [C] Call By Value

    [C] Call By Value

    2022.04.13
  • [C] 문자열과 포인터

    [C] 문자열과 포인터

    2022.04.01
  • [C] 포인터 연산

    [C] 포인터 연산

    2022.04.01
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (678)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (10)
    • 💬 기록 (7)
    • 📚 공부 (6)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바