일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C언어 배열
- 자바
- 텍스트 파일 읽기
- HTML5
- Vim
- Oracle
- 오라클
- C언어 변수
- C언어 파일입출력
- URL 다운로드
- GUI
- C언어 구조체
- 날짜
- C언어 메모리
- 구글 reCaptcha
- C언어 함수
- TCP/IP 소켓
- java
- jsp
- 포인터
- SQL
- C언어 매크로
- Spring email
- Spring google
- 역순
- placehoder
- Google reCaptcha
- gcc
- Naver SmartEditor
- C언어
- Today
- Total
easy software
C언어 포인터와 배열의 이해 본문
저번 시간에는 포인터와 배열이 어떤 관계인지 확인해봤습니다.
이번 글에서는 예제를 풀어보도록 할테니, 개념과 기본 정보를 원하는 분들은
아래의 글을 확인해 주세요.
이제 간단한 예제를 통해 그 둘의 관계를 확인해 보도록 합시다.
예제 1
1. 우선 길이가 5인 배열을 선언하고 1~5로 값을 초기화 합니다.
2. 그리고 포인터를 선언하여 배열의 주소값을 가리키게 합니다.
3. 후에 포인터 연산을 통하여 배열의 요소값을 2씩 증가시킨 후 출력해봅시다.
이 문제는 arr[i] = = *(arr+i)의 개념을 묻는 문제입니다.
코드보시죠.
#include <stdio.h>
int main(void){
//길이가 5인 int형 배열 선언
int arr[5] = { 1, 2, 3, 4, 5 };
//포인터변수 p가 arr의 첫번째 주소를 가리키게 함
int* p = arr;
//포인터p를 이용하여 배열을 조작(값을 2씩 증가)후 출력
for (int i = 0; i < 5; i++)
*(p + i) += 2;//arr[i] 와 *(p+i)는 동일합니다
for (int i = 0; i < 5; i++)
//값은 포인터 변수로 조작했지만 arr에 그대로 저장되어 있습니다
printf("arr[%d]의 값 %d \n", i, arr[i]);
return 0;
}
예제 2
이번에도 비슷한 맥락의 문제입니다.
1. 우선 길이가 5인 배열을 선언하고 1~5로 값을 초기화 합니다.
2. 그리고 포인터를 선언하여 배열의 주소값을 가리키게 합니다.
3. 포인터를 이용하여 배열요소의 순서를 뒤바꾼 후 출력합니다.
이 문제는 포인터를 배열의 이름처럼 사용하는 방법을 아는지 묻는 문제입니다.
플러스해서 배열의 구조를 이해하여 순서를 뒤바꾸는 것을 요구하고 있습니다.
아래 코드보시죠.
#include <stdio.h>
int main(void){
int arr[5] = { 1, 2, 3, 4, 5 };
int* p = arr;
int temp; //임시변수
//포인터 p를 이용하여 배열의 순서를 뒤짚음
for (int i = 0; i < 5 / 2; i++){
temp = p[i];//임시변수에 i번 차례의 맨 앞 포인터값을 저장
p[i] = p[4 - i];//i번 차례의 맨 앞 포인터에 맨 뒤 포인터 값을 저장
p[4 - i] = temp;//i번 차례의 맨 뒤 포인터에 맨 앞 포인터 값을 저장
}
//뒤짚혀있는 배열값을 출력
for (int i = 0; i < 5; i++)
printf("%d ", p[i]);
printf("\n");
return 0;
}
'C언어 > 포인터와 배열' 카테고리의 다른 글
C언어 Call-By-Value / Reference 예제 (0) | 2015.01.19 |
---|---|
C언어 Call-By-Value / Reference 이해 (0) | 2015.01.19 |
C언어 포인터와 연산, 포인터와 배열의 관계 (0) | 2015.01.17 |
C언어 포인터의 기본 개념(예제2) (0) | 2015.01.15 |
C언어 포인터의 기본 개념(예제) (0) | 2015.01.15 |