일반변수와 포인터변수
일반변수 : 값을 저장해야 할 경우 필요
포인터변수 : 변수의 주소를 저장해야 할 경우 (동적 할당 또는 6장 함수에서 다뤄짐)
일반변수 | 포인터 변수 | 비고 | |
선언 | 자료형 변수이름; | 자료형 *포변수이름; | & : 주소지정 연산자 * : 간접 연산자 |
값 할당 | 변수이름=값; | 포변수이름=주소; *포변수이름=값; |
|
선언과 동시에 초기화 | 자료형 변수이름=값; | 자료형 *포변수이름=주소; |
예제를 통해 알아보자.
#include <iostream>
using namespace std;
int main()
{
int a=100;;
int *pa;
pa=&a;
cout << "a에 저장된 값 : " << a << endl;
cout << "a의 주소 : " << &a << endl;
cout <<"******************************"<< endl;
cout << "a에 저장된 값 : " << *pa << endl; //pa에 저장된 값이 가리키는 곳으로 이동(간접참조이고 direct로 접근하는 일반 변수와는 달리 한번더 참조하라는 간접 연산자)
cout << "a의 주소 : " << pa << endl;
a = 999;
cout << "a에 저장된 값 : " << *pa << endl; //a의 값이 바뀐거지 pa(주소)는 그대로이다.
cout << "a의 주소 : " << pa << endl;
return 0;
}
배열1
- 변수(일반 변수, 포인터 변수)
하나의 기억 공간
예) 나이, 점수, 성별 등의 데이터를 저장
- 배열
연속적인 기억 공간
예) 30명의 총점을 저장, 세 과목의 성적을 저장
선언할 때 연속적으로 필요한 기억 공간의 개수를 표시
배열2
배열 선언 : 자료형, 배열이름, 크기
자료형 배열이름[크기];
배열 첨자는 0부터 시작
int score[3]; 의 경우 score[0], score[1], score[2]
char name[30];의 경우name[0], name[1], …. , name[28], name[29]
배열3
배열이름 = 주소 // 포인터와 같은 원리임
아래 예제를 통해 알아보자.
#include <iostream>
using namespace std;
int main()
{
int score[3]={99,88,100};
char name[5];
cout << "score[0]의 주소 : " << &score[0] << endl;
cout << "score[1]의 주소 : " << &score[1] << endl;
cout << "score[2]의 주소 : " << &score[2] << endl;
cout << "******************************************" << endl;
for (int i=0; i<3; i++)
cout << "score[" << i << "]의 주소 : " << &score[i] << endl;
cout << "******************************************" << endl;
cout << "score[0]의 주소 : " << score << endl;
cout << "score[1]의 주소 : " << score+1 << endl;
cout << "score[2]의 주소 : " << score+2 << endl;
cout << "******************************************" << endl;
for (int i=0; i<3; i++)
cout << "score[" << i << "]의 주소 : " << score+i << endl;
cout << "******************************************" << endl;
for (int i = 0; i < 5; i++)
// cout << "name[" << i << "]의 주소 : " << &name[i] << endl;
cout << "name[" << i << "]의 주소 : " << hex << (int)&name[i] << endl; // 형변환과 16진수로 출력하는 이유는 추후 문자열부분에서 설명
return 0;
}
'C > [언어본색] C 기초' 카테고리의 다른 글
[언어 본색] #19 4장 - 문자열 (0) | 2021.10.11 |
---|---|
[언어 본색] #18 4장 - 배열 (0) | 2021.10.01 |
[언어 본색] #16 4장 - 포인터 변수 (1) (0) | 2021.10.01 |
[언어 본색] #14 3장 - 반복문의 중복 (0) | 2021.09.30 |
[언어 본색] #10 2장 - 논리형 (2) (0) | 2021.09.30 |