Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- chatgpt #gpt #챗지피티 #ai
- 도커 #Docker #배포 #Spring #MySQL #백엔드배포
- 도커 #docker #docker-compose.yml #도커컴포즈 #배포 #spring #mysql #docker-compose
- /
Archives
- Today
- Total
개발자 데뷔!
[C/C++ 7.3] 포인터 본문
// a 변수가 0xA1에 저장되어있고, b를 가리키고 있으며,
// b 변수가 0xB6에 저장되어있을 때 ,
// a: a가 가리키는 b의 주솟값 (0xB6)
// &a: a의 주솟값(0xA1)
// *a: a가 가리키는 b의 '값', 값이 저장되어있지 않을시, 다시 변수 b가 가리키는 변수의 주솟값
포인터 변수 선언
** 주의!
포인터 변수는, 일일이 하나씩 전부 선언해주어야한다!
char* ap, * bp, * cp; // O
// char * ap,bp,cp; // X 이렇게 한번에 하면 제일 앞에만 포인터 걸림 !!
포인터 연산
가능 )
*p += 1;
(*p)++;
불가능)
*p++; // 왜냐하면 이것은 *(p++)과 같아, p주소값에 1을 더한다는 뜻!!!
포인터 사용
// 그냥 변수와 포인터 변수 type을 일치 시켜야 함 !
int main() {
int a;
char gd;
cin >> a >> gd;
int* p;
p = &a;
char* t;
t = &gd;
cout << *p<<" ";
cout << *t<<" ";
return 0;
}
int main() {
int a, b;
cin >> a >> b;
int* p;
int* t;
p = &a;
t = &b;
int tmp;
tmp = *p;
*p = *t;
*t = tmp;
cout << *p;
cout << " ";
cout << *t;
return 0;
}
포인터배열
포인터 배열 초기화 방식
int* simData[5] = { &a, &b, &c, &d, &e };
EX)
// 1 번
int main() {
int *simData[5];
int a, b, c, d, e;
cin >> a >> b >> c >> d >> e;
simData[0] = &a; // int* simData[5] = { &a, &b, &c, &d, &e }; :: 이 방식으로 한꺼번에 초기화 가능 !!!!
simData[1] = &b;
simData[2] = &c;
simData[3] = &d;
simData[4] = &e;
int max, min;
max = a;//*simData[0];
min = a;
for (int i = 0; i < 5; i++) {
if (*simData[i] > max)
max = *simData[i];
if (*simData[i] < min)
min = *simData[i];
}
cout << "MAX:" << max << endl;
cout << "MIN:" << min << endl;
return 0;
}
EX)
// 9번
int main() {
string str;
int data[4];
char* ptrs[4]; // 실제로 가리킬 것과 포인터 자료형 일치 !
// 입력
cin >> str;
for (int i = 0; i < 4; i++)
cin >> data[i];
// 포인터 지칭
for (int i = 0; i < 4; i++)
ptrs[i] = &str[data[i]];
// 출력
for (int i = 0; i < 4; i++) {
cout << *ptrs[i];
}
return 0;
}
포인터함수
포인터 함수 사용방식
기본적으로 int* a = &a 구조를 따름
함수 선언
void SWAP(int *a) {
...
}
함수 사용
SWAP(&a);
EX)
// 5번
void SWAP(int *a, int *b) { // int* a = &a, int *b = &b
int tmp = *a;
*a = *b;
*b = tmp; // 값만 swap 하면, 굳이 return 안해도 값 바뀜
}
int main() {
int a, b;
cin >> a >> b;
SWAP(&a,&b); // 함수 사용시 주소를 넣음
cout << a << " " << b;
return 0;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
[C/C++ 7.4] 더블 포인터 (0) | 2022.03.16 |
---|---|
[C/C++ 3.3.5] 배열 초기화의 특이 case (0) | 2022.03.16 |
[C/C++ 7.2] 구조체 (0) | 2022.03.16 |
[C/C++ 7.1] 함수 (0) | 2022.03.16 |
[C/C++ 2.10] ASCII(아스키 코드) 와 형변환(casting) (0) | 2022.03.15 |