포인터 배열
: 포인터가 나열 되어 있는 것
2개 이상의 주소값을 저장할 수 있도록 함(목적)
값에 접근하기 위해서는 두번 참조해야 한다.

#include <stdio.h>
#define SIZE 3
//void 함수를 선언해서 40, 50, 60으로 값 바꾸기
//배열 받아오기
void changeValue(int*);
//void changeValue(int*[]);
void main() {
int num1 = 10, num2 = 20, num3 = 30;
int* PArNum[3] = { &num1, &num2, &num3 };
for (int i = 0; i < SIZE; i++) {
printf("%d ", **(PArNum+i));
}
printf("\n");
changeValue(PArNum);
//PArNum 자체가 이중포인터이기때문에 **되어 있을때 &PArNum로 받을 필요가 없다.
for (int i = 0; i < SIZE; i++) {
printf("%d ", **(PArNum + i));
}
printf("\n");
}
//이중포인터로 받는 경우
void changeValue(int** PArNum) {
for (int i = 0; i < SIZE; i++) {
**(PArNum+i) += 30;
}
}
//단일포인터로 받는경우
//void changeValue(int* PArNum) {
// for (int i = 0; i < SIZE; i++) {
// *(PArNum [i]) += 30;
// }
//
//}
배열 포인터
: 배열의 주소를 담는 저장공간
#include <stdio.h>
#define SIZE 3
int arNum[SIZE] = { 4, 5, 6 };
void changeAdr(int*);
void main() {
int arNum[SIZE] = { 1, 3, 5 };
int(*pNum)[SIZE] = &arNum;
for (int i = 0; i < SIZE; i++) {
printf("%d ", *(*pNum + i));
}
changeAdr(&pNum);
for (int i = 0; i < SIZE; i++) {
printf("%d ", *(*pNum + i));
}
}
void changeAdr(int*arData) {
*arData = arNum;
}
지역변수, 전역변수, static변수

* Data영역은 다른 파일에서도 사용 가능하기 때문에 보안성이 좋지 않다.
'C언어 > 예습' 카테고리의 다른 글
[C언어 예습]DAY17_동적 배열 실생활 예제(막대그래프), 알고리즘 예제(Baseball Game) (0) | 2020.02.10 |
---|---|
[C언어 예습]DAY16_동적 할당, 동적 배열 (0) | 2020.02.10 |
[C언어 예습]DAY14_포인터(2) 정적 배열, 동적 배열, 이중 포인터 (0) | 2020.02.05 |
[C언어 예습]DAY13_포인터(1) (0) | 2020.02.05 |
[C언어 예습]DAY12_함수의 응용(계산기) (0) | 2020.02.04 |