<정처기> C언어 2. 포인터

빡찌's avatar
Sep 23, 2024
<정처기> C언어 2. 포인터

포인터의 개념과 활용

기본기
  1. 변수가 정수형태 일때
    1. int v = 42;
  1. 변수가 문자열 일 때 (여러 문자와 ‘\0’)
    1. char str[] = “Hello!”;
  1. 변수가 배열일 때
    1. int arr[] = {1,2,3,4,5);
       

중요 키워드

&(앰퍼센트) : 이 변수의 메모리 상의 주소가 무엇이니?

: 변수가 ram에 접근하는 하드웨어 에다가 저장을 하고 그 저장된 주소를 물어보는 것(?) - 이정도까진 알빠 아니고
#include<stdi0.h> int main() { int n = 42; printf("%d\n", n); //42출력 printf("%d\n", &n); //주소값 출력 }
 

*(애스트러스크) : 그 주소(addr)가 가리키고 있는 값(value)을 가져와

중요!!!!!! *이 참 많이 쓰이는데
  1. 포인터 변수를 생성할때
  1. 주소의 값을 들고 올때
int n = 42; int *p = &n; //이건 p라는 포인터 변수를 선언한것 printf("%d\n", p); //주소값 출력
p 자체는 n의 주소값을 나타는 ‘포인터변수’로 선언되어 있기 때문
그래서 값인 42를 출력하려면
printf("%d\n", *p); //42 출력
이렇게 *을 붙여줘야 한다.
 
★ 포인터 변수는 태어날때 쓰인 별과 사용할 때 별을 다르게 해석
주소를 출력하라는 문제는 절!대! 나오지 않음(당연)
 

문자열과 배열을 포인터로 …

C언어 자체가 배열과 문자를 받을때 알아서 주소를 가져옴
즉 &(앰퍼센트)를 생략함
int array[] = {1,2,4}; int *p = array; //&array로 안쓰고 바로 array라 씀
 

중간점검

  1. *(별표)의 기능은 3가지
    1. 포인터 변수 탄생
    2. 주소의 값 가져오기
    3. 곱하기
  1. 문자열은 그 자체로 메모리를 준다.
    1. char *s = &”Hello”라고 안한다는 뜻
  1. 문자열의 주소는 가장 앞의 문자의 주소임.
  1. 그 이야기는 s[0], *s 의 출력값은 같다는 뜻(H)
  1. C언어에서 문자열은 문자가 여러개 붙어있는 형태임
 
Share article

prettytree