티스토리 뷰
C언어 배열과 포인터
C언어 배열과 포인터에 대해 Do it! C언어 입문(저자:김성엽) 이란 책을 통해 공부했으며, 책의 카테고리를 바탕으로 필자가 이해한 내용을 요약한 글이다. 내용이 궁금하거나 찾아야 할 내용이 있으면, 필자가 정리한 글을 다시 보면서 복습하기위해 작성했다. 바로 아래에서 글을 확인하도록 하자.
배열 표기법과 포인터 표기법의 관계
배열은 배열이 사용하는 메모리 그룹의 시작 주소를 기준으로 하고, 포인터도 포인터 변수가 가리키는 메모리의 시작 주소를 기준으로 주소를 갖고 있음.
char data[5]
data[1]=5;
*(data+1)=5; /* 3행과 4행의 식은 같음 */
char data;
char *p = &data;
*p = 3;
p[0]=3; /*3행과 4행의 식은 같음 */
배열 표기법의 한계
int data[2] = {0x12345678,0x12345678};
이렇게 선언하고 data[0]의 78 부분만 바꾸고 싶어서 data[0] = 0x22를 넣으면 data[0] = 00000022 이 된다.
하지만 포인터 표기법을 사용하면 가능하다.
*(char *)data=0x22; /* 값이 0x12345622 됨. */
배열 시작 주소
char data[4];
char *p = &data[0]; /* 같은 표현이다 */
char *p = data;
배열 예제를 포인터 사용해서 바꾸기
#include <stdio.h>
void main()
{
char data[5]={1,2,3,4,5};
int result = 0,i;
char *p= data;
for(i=0;i<5;i++){
result = result + *p;
p++; /* 포인터 변수 p가 가리키는 곳의 크기는 1byte 이므로 p++ 를 하면 다음 1바이트인, data[1]을 가리킴*/
}
printf("data 배열의 각 요소의 합은 %d 입니다.\n", result);
}
/*결과화면 data 배열의 각 요소의 합은 15입니다. */
배열과 포인터의 합체
char *p1, *p2, *p3, *p4, *p5;
/* 이렇게하면 많은 포인터 변수를 선언할때는 힘듦.
아래처럼 선언할 수 있음 */
char *p[5];
포인터를 기준으로 배열과 합체하기
char(*p)[5];
/* 이건 포인터변수 p 1개가있는거고,
p가 가리키는 대상이 5바이트 라는 뜻이다.
(*p)[1] 이것은 p가 가리키는 5바이트중에
2번째 1바이트를 가리키는 뜻이다. */
p++;
/* p가 가리키는 대상이 5바이트 이므로 5바이트씩 주소가 증가한다.
예를들어 p가 100번지를 가리키면 p++ 이후는 105번지를 가리키게 된다. */
글을 마음대로 배포하셔도 되지만, 출처(링크)는 반드시 남겨주시기 바랍니다.
'C언어' 카테고리의 다른 글
C언어 동적 메모리 할당 (0) | 2021.03.15 |
---|---|
C언어 정적 메모리할당 (0) | 2021.03.15 |
C언어 표준 입력 함수 (0) | 2021.03.15 |
C언어 포인터 (0) | 2021.03.14 |
C언어 배열 (0) | 2021.03.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- html이미지
- PHP작은따옴표
- C언어정적메모리할당
- C언어동적메모리할당
- PHP이스케이프
- PHP'"
- C언어다차원포인터
- HTMLtag사용법
- C언어malloc
- PHP이스케이핑
- htmlTag
- PHP작은따옴표역할
- HTML태그사용법
- PHP'
- PHPhere문서
- PHP큰따옴표작은따옴표차이점
- HTMLbestTag
- html이미지넣기
- 이미지무료다운로드사이트
- 무효클릭신고양식
- PHPescaping
- PHPescapecharacter
- 무효트래픽이의신청
- C언어프로세스
- PHP큰따옴표
- C언어2차원포인터
- PHP문자열연결연산자
- PHP마침표
- C언어malloc함수
- PHP"'
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함