1. 강사 - ê°�오 한 마디씩^^; ¶
- 강�수 : 얘들아 잘해보�~^^
- �병� : 설마 � 5명� 다 하�는 건 아�테구..ㅡ.ㅡ 암튼 열심히 해보세
- ì�´ì°½ì„ : ì�´íž›. 재밌게 설명해줘야ì¥�..캬캬.. ê·¼ë�° 나ë�„ 강사 ë§žì•„? í��í��.. í•˜ê³ ì‹¶ì§€ë§Œ 강사가 너무 ë§Žì�€ê±° 아닌가 해서..^^;
- ì�´ìƒ�ê·œ : 나 ZP 아닌ë�° í•´ë‘�ë�˜?-_-;; 오프ë�¼ì�¸ìƒ�ì—�서 ì§�ì ‘ ê°•ì�˜ë�„ 가능..ã…‹ã…‹ 강사로 초빙 바람..ã…‹ã…‹
DeleteMe) 너 ì�´ì œ ZP야~
- ì‹ ìž¬ë�™ : í•™ì›� 강사 2ë…„ì�˜ ê²½ë ¥ì�„ 무기로...-,-V
- 남�협 : 난 꼽사리.... ㅡㅡ;;
- ì�´ì„ 호 :
2. 대ìƒ� ¶
- c++ì�„ 듣는ë�°ë�„ 잘 ì�´í•´ì•ˆê°€ê³ 아리까리한 02
- 알아ë�„ 다시 ë“£ê³ ì‹¶ì�€ 02
- 강사들ì�´ ì�´ìƒ�한 소리 하면 ë§�ë ¤ 줄수 있는 ì„ ë°°ë‚˜ ë�™ê¸°
4.1. 기본 ìž…ì¶œë ¥ ¶
- cout
~cpp
#include <iostream>
using namespace std;
int main()
{
int a=3;
cout<<"ZP 파�팅!\n";
cout<<a<<endl;
return 0;
}
- cin
~cpp
#include <iostream>
using namespace std;
int main()
{
int age;
cout<<"너 몇살�야?";
cin>>age;
cout<<age<<"살�구나";
return 0;
}
4.2. 변수와 구조체 ¶
- 기본형(int,long 등등)
~cpp int a=5; long b=50000000; bool c=true; // or false double d=4233.423423;
- 확장형(구조체,�래스 등등)
~cpp
// 구조체는 사용ìž� ì •ì�˜ ë�°ì�´í„° 형ì�´ë‹¤. 구조체를 ì„¤ì •í•´ 놓으면 그것ì�„ int나 longê°™ì�€ 기본 ë�°ì�´í„°í˜•처럼 쓸수있다. ì˜ˆì œë¥¼ 봅시다.
struct Zealot
{
int HP; // 멤버들
int Shield;
bool MP;
bool BalUp;
int Damage;
....
....
}
// ìž� 질롯 구조체가 만들어졌습니다. ì�´ì œ Zealotì�´ë�¼ëŠ” 단어를 int나 long처럼 쓸수 있는거지요.
Zealot z1;
// ì�´ì œ 질롯형ì�˜ 변수 z1ì�´ 만들어졌습니다. ì�´ì œ z1ì�˜ 멤버를 ì„¤ì •í•´ì¤˜ì•¼ê² ì£ ? 멤버ì—� ì ‘ê·¼í• ë•ŒëŠ” .ì�„ ì”�니다.
z1.HP=100;
z1.Shield=60;
z1.MP=false; // 질롯� 마법� 못쓴다.
z1.BalUp=false; // 질롯� 첨� 나올때는 달리기업� 안�어있다.
z1.Damage=....
4.3. 반복문 ¶
- ì�¼ë°˜ì �으로 몇번 반복 í•´ì•¼í• ì§€ 알때는 for, 잘 모를떄는 whileì�„ 쓴다.
- for
~cpp
// 1�서 100까지 합� 구하는 프로그램
#include <iostream>
using namespace std;
int main()
{
int sum=0;
for(int i=1;i<=100;i++)
{
sum+=i;
}
cout<<sum;
return 0;
}
- while
~cpp
// 1�서 100까지 합� 구하는 프로그램
#include <iostream>
using namespace std;
int main()
{
int count=1,sum=0;
while(count<=100)
{
sum+=count;
}
cout<<sum;
return 0;
}
4.4. 조건문 ¶
- if-else
~cpp
#include <iostream>
using namespace std;
int main()
{
int age;
cout<<"너 몇살�야?";
cin>>age;
if(age>=50)
cout<<"나� 많네요";
else
cout<<"나ì�´ ì �네요";
}
- switch-case
~cpp
#include <iostream>
using namespace std;
int main()
{
int age;
cout<<"몇번으로 ��까?";
cin>>age;
switch(age)
{
case 1:
cout<<"1번";
break;
case 2:
cout<<"2번";
break;
default:
cout<<"...";
}
}
4.5. ë°°ì—´ ¶
- 같� 타입� ��터를 묶어서 표현해줄수 있는 것.
~cpp
// int형 ë�°ì�´í„° 5개를 ì €ìž¥í•˜ë ¤ë©´
int a[5]={1,2,3,4,5};
int a[]={1,2,3,4,5};
int
4.6. í�¬ì�¸í„° ¶
- ��터란?
아주 중요한 사실ì�´ë‹ˆ ê¼ ê¸°ì–µí•˜ê¸° 바란다.
그럼 í�¬ì�¸í„°ê°€ 변수ì�´ê¸´ 한ë�° 과연 무엇ì�„ ì €ìž¥í•˜ëŠ” 변수란 ë§�ì�¸ê°€??
int로 ì •ì�˜í•œ 변수는 ì •ìˆ˜ë¥¼ ì €ìž¥í•˜ëŠ” 변수ì�´ê³ ,
double로 ì •ì�˜í•œ 변수는 소수ì �ì�´ 있는 수를 ì €ìž¥í•˜ëŠ” 변수ì�´ê³ ,
char로 ì •ì�˜í•œ 변수는 문ìž�를 ì €ìž¥í•˜ëŠ” 변수ì�¸ë�°...
과연 í�¬ì�¸í„°ëŠ” 무엇ì�„ ì €ìž¥í•˜ëŠ” 변수ì�¸ê°€??
int로 ì •ì�˜í•œ 변수는 ì •ìˆ˜ë¥¼ ì €ìž¥í•˜ëŠ” 변수ì�´ê³ ,
double로 ì •ì�˜í•œ 변수는 소수ì �ì�´ 있는 수를 ì €ìž¥í•˜ëŠ” 변수ì�´ê³ ,
char로 ì •ì�˜í•œ 변수는 문ìž�를 ì €ìž¥í•˜ëŠ” 변수ì�¸ë�°...
과연 í�¬ì�¸í„°ëŠ” 무엇ì�„ ì €ìž¥í•˜ëŠ” 변수ì�¸ê°€??
í�¬ì�¸í„°ëŠ” 바로 변수ì�˜ 메모리 주소를 ì €ìž¥í•˜ëŠ” 변수ì�´ë‹¤. (그러므로 í�¬ì�¸í„°ëŠ”, ê·¸ í�¬ì�¸í„°ê°€ ì–´ë–¤ 종류ì�˜ 변수ì�˜ 주소값ì�„ 가지ëŠ�ëƒ�ì—� ë”°ë�¼ì„œ 변수ì�˜ 가짓수 ë§Œí�¼ì�˜ 변형ì�´ 있다. 왜 여러 종류ì�˜ í�¬ì�¸í„°ê°€ 필요한지는 나중ì—� í�¬ì�¸í„°ì�˜ ì—°ì‚°(ë¬¼ë¡ í�¬ì�¸í„°ë�„ 변수ì�´ë¯€ë¡œ ì—°ì‚°, 비êµ�, 대입 등 ê±°ì�˜ ì�¼ë°˜ë³€ìˆ˜ì—�서 가능한 ëª¨ë“ ê²ƒì�´ 가능하다)ì—�서 ì„¤ëª…í•˜ê² ë‹¤.)
변수ì—� ì–´ë–¤ ê°’ì�„ ì €ìž¥í•œë‹¤ëŠ” 것ì�€ ì‹¤ì œë¡œ ê·¸ 변수ì—� 대ì�‘하는 메모리ì—� ì €ìž¥í•˜ëŠ” 것ì�´ë‹¤.
"ì�´ 컴퓨터는 메모리가 256MB"ì�´ë‹¤ ë�¼ê³ í• ë•Œì�˜ ê·¸ 메모리를 ë§�ì�´ë‹¤.
ê·¸ 256MB나 ë�˜ëŠ” 메모리ì—�서 ê·¸ ê°’ì�´ ì €ìž¥ë�˜ëŠ” 위치가 메모리ì�˜ 주소ì�´ë‹¤.
256MB나 �는 메모리�서 변수� 대�하는 메모리� 위치가 변수� 메모리 주소�다.
ì�´ì—� 대해서는 하드웨어ì �ì�¸ 컴퓨터ì�˜ ë�™ìž‘ì›�리ì—� 대한 체계ì �ì�¸ ì�´í•´ê°€ 필요하지만 나중ì—� ê¸°ìˆ í•˜ë�„ë¡� í•˜ê² ë‹¤.
변수ì—� ì–´ë–¤ ê°’ì�„ ì €ìž¥í•œë‹¤ëŠ” 것ì�€ ì‹¤ì œë¡œ ê·¸ 변수ì—� 대ì�‘하는 메모리ì—� ì €ìž¥í•˜ëŠ” 것ì�´ë‹¤.
"ì�´ 컴퓨터는 메모리가 256MB"ì�´ë‹¤ ë�¼ê³ í• ë•Œì�˜ ê·¸ 메모리를 ë§�ì�´ë‹¤.
ê·¸ 256MB나 ë�˜ëŠ” 메모리ì—�서 ê·¸ ê°’ì�´ ì €ìž¥ë�˜ëŠ” 위치가 메모리ì�˜ 주소ì�´ë‹¤.
256MB나 �는 메모리�서 변수� 대�하는 메모리� 위치가 변수� 메모리 주소�다.
ì�´ì—� 대해서는 하드웨어ì �ì�¸ 컴퓨터ì�˜ ë�™ìž‘ì›�리ì—� 대한 체계ì �ì�¸ ì�´í•´ê°€ 필요하지만 나중ì—� ê¸°ìˆ í•˜ë�„ë¡� í•˜ê² ë‹¤.
- Why Pointer
여러가지로 ë§�ì�´ 많았는ë�° ì�´ì¯¤ì—�서 í�¬ì�¸í„°ì�˜ ì“°ìž„ì—� 대해 간략하게나마 ì„¤ëª…í•˜ê² ë‹¤. í�¬ì�¸í„°ì�˜ ì�´ë¡ ì �ì�¸ ì •ì�˜ëŠ” 무엇ì�¸ê°€. 바로 '메모리ì�˜ 주소를 ê°€ì§€ê³ ìžˆëŠ” 변수'란 것ì�´ë‹¤. 그건, ë�™ì‹œì—� í�¬ì�¸í„°ë¥¼ ì�´ìš©í•˜ë©´ ê·¸ 해당하는 메모리로ì�˜ ì§�ì ‘ì �ì�¸ ì ‘ê·¼ê³¼ ì œì–´ê°€ 가능하다는 뜻ì�´ë‹¤. ê·¸ë ‡ë‹¤ë©´ í�¬ì�¸í„°ì�˜ ì—활ì�€ 메모리로ì�˜ ì§�ì ‘ì �ì�¸ 억세스가 ë�˜ëŠ”ê²ƒì�´ê³ , 여기ì—� í�¬ì�¸í„°ì�˜ ì—°ì‚°ì�„ 통해 ê±°ì�˜ 어셈블리언어ì—� ê°€ê¹Œìš´ì •ë�„ì�˜ ì €ìˆ˜ì¤€ 메모리 ì œì–´ë¥¼ 가능케 한다. 바로 그것ì�´ í�¬ì�¸í„°ì�˜ 존재ì�´ìœ ì�´ë©° ì“°ìž„ì�´ë‹¤. ì�´ëŸ° ì�´ë¡ ì �ì�¸ í�¬ì�¸í„°ì�˜ ì“°ìž„ ë§�ê³ , ì§�ì ‘ì �ì�¸ 강함ì�˜ ì²´í—˜ì�„ ì›�한다면, 여러분ì�´ ì§�ì ‘ 사용해볼것ì�„ 권한다.
- ��터는 어떻게 만들까?
문ìž�형 변수는 char를 사용해 ë§Œë“ ë‹¤.
~cpp // ì�´ë ‡ê²Œ ë§�ì�´ë‹¤.. int a; // ì •ìˆ˜í˜• 변수 char b; // 문ìž�형 변수
ê·¸ë ‡ë‹¤ë©´ í�¬ì�¸í„°ëŠ” 어떻게 만들까?
��터는 다�과 같� *만 쓰면 만들 수 있다.
��터는 다�과 같� *만 쓰면 만들 수 있다.
~cpp int *a; // ì •ìˆ˜í˜• 변수ì�˜ 메모리 주소를 ì €ìž¥í•˜ëŠ” 변수(ì •ìˆ˜í˜• í�¬ì�¸í„°ë�¼ê³ 함..) char *b; // 문ìž�형 변수ì�˜ 메모리 주소를 ì €ìž¥í•˜ëŠ” 변수(문ìž�형 í�¬ì�¸í„°) int *c1, *c2, *c2; // 여러개를 ê°™ì�´ 만들ë•�.. 모ë‘�다 *를 붙여야함.
다ì�Œê³¼ ê°™ì�€ ì„ ì–¸ë�„ ìœ íš¨í•˜ë‹¤.
~cpp int* pi; int * pi; (int *) pi; /* ì�´ëŸ° ì‹�으로 사용하면 좀ë�” 명확하다. ì •ìˆ˜ì�˜ í�¬ì�¸í„°ë�¼ëŠ”. */
ì�´ë ‡ê²Œ 만들면, a는(*aê°€ 아니다. ì •ì�˜í• 때만 *를 붙여야 한다. ì‚¬ìš©í• ë•� a로 쓴다)
ì •ìˆ˜í˜• 변수ì�˜ 메모리 주소를 ì €ìž¥í•˜ëŠ” í�¬ì�¸í„°ê°€ ë�˜ê³ , b는 문ìž�형 변수ì�˜ 메모리 주소를
ì €ìž¥í•˜ëŠ” í�¬ì�¸í„°ê°€ ë�œë‹¤.
ì •ìˆ˜í˜• 변수ì�˜ 메모리 주소를 ì €ìž¥í•˜ëŠ” í�¬ì�¸í„°ê°€ ë�˜ê³ , b는 문ìž�형 변수ì�˜ 메모리 주소를
ì €ìž¥í•˜ëŠ” í�¬ì�¸í„°ê°€ ë�œë‹¤.
- ��터� 사용
그럼 ��터를 어떻게 사용하는지 알아보기로 하�.
��터를 사용하는�는 �가지 연산�가 사용�다.
하나는 &ì�´ê³ , 다른 하나는 *ì�´ë‹¤.(여기서 *는 í�¬ì�¸í„°ë¥¼ 만들때ì�˜ *와는 다른 ì�˜ë¯¸ì�´ë¯€ë¡œ 잘 구분하기 바란다.)
ë¨¼ì € &ì—� 대해 살펴보기로 하ìž�.
&는 어떤 변수� 주소를 얻어내는� 사용�다. 어떤 변수가 있�때 그 변수 앞� &를 붙�면 그것� 그 변수� 메모리 주소가 �다.
예를 ë³´ë©´ 쉽게 ì�´í•´ê°€ ë� ê±°ë�¼ê³ 본다.
&는 어떤 변수� 주소를 얻어내는� 사용�다. 어떤 변수가 있�때 그 변수 앞� &를 붙�면 그것� 그 변수� 메모리 주소가 �다.
예를 ë³´ë©´ 쉽게 ì�´í•´ê°€ ë� ê±°ë�¼ê³ 본다.
~cpp int a; // a는 ì •ìˆ˜í˜• 변수 int *p; // p는 ì •ìˆ˜í˜• 변수ì�˜ 메모리 주소를 ì €ìž¥í•˜ëŠ” 변수. (ì •ìˆ˜í˜• í�¬ì�¸í„°) p=&a; // aì�˜ 메모리 주소를 pì—� ì €ìž¥í•œë‹¤. (p는 ì •ìˆ˜í˜• 변수ì�˜ 메모리 주소를 ì €ìž¥í•˜ëŠ” 변수ì�´ë¯€ë¡œ...)
&는 ì�¼ë°˜ì �으로 ì •ìˆ˜í˜• 변수나 문ìž�형 변수 등과 ê°™ì�´ í�¬ì�¸í„°ê°€ 아닌 변수들ì�„ 대ìƒ�으로 사용하지만... í�¬ì�¸í„°ë¥¼ 대ìƒ�으로 ì‚¬ìš©í• ìˆ˜ë�„ 있다.
처ì�Œì—� 강조했듯ì�´ í�¬ì�¸í„° ì—시 변수ì�´ê¸° 때문ì�´ë‹¤. 그러한 경우ì—� 대해서는 나중ì—� 다시 알아보기로 í•˜ê² ë‹¤.
처ì�Œì—� 강조했듯ì�´ í�¬ì�¸í„° ì—시 변수ì�´ê¸° 때문ì�´ë‹¤. 그러한 경우ì—� 대해서는 나중ì—� 다시 알아보기로 í•˜ê² ë‹¤.
다� *� 대해 알아보�.
(�해하기 힘들지� 모르니.. 아주 �~알 �기 바란다.)
*는 í�¬ì�¸í„°ë¥¼ 대ìƒ�으로만 사용ë�˜ëŠ” ì—°ì‚°ìž�ì�¸ë�°, í�¬ì�¸í„°ì—� ì €ìž¥ë�˜ì–´ 있는 메모리 주소ì—� ë³´ê´€ë�˜ì–´ 있는 ê°’ì�„ ì—‘ì„¸ìŠ¤í• ë•Œ 사용한다.
무슨ë§�ì�¸ì§€ ì�´í•´ê°€ 안ë�˜ë©´ 10번만 다시 잘 ì�½ê³ , 다ì�Œ 예를 보길 바란다.
(�해하기 힘들지� 모르니.. 아주 �~알 �기 바란다.)
*는 í�¬ì�¸í„°ë¥¼ 대ìƒ�으로만 사용ë�˜ëŠ” ì—°ì‚°ìž�ì�¸ë�°, í�¬ì�¸í„°ì—� ì €ìž¥ë�˜ì–´ 있는 메모리 주소ì—� ë³´ê´€ë�˜ì–´ 있는 ê°’ì�„ ì—‘ì„¸ìŠ¤í• ë•Œ 사용한다.
무슨ë§�ì�¸ì§€ ì�´í•´ê°€ 안ë�˜ë©´ 10번만 다시 잘 ì�½ê³ , 다ì�Œ 예를 보길 바란다.
~cpp
#include <iostream>
using namespace std;
void main()
{
int a; // 여기 세줄� 앞�서 설명했다
int *p;
p=&a;
a=10; // a� 10� 넣는다.
cout << a << " " << *p << "\n"; // aì�˜ ê°’ê³¼ pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소ì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ ì¶œë ¥í•œë‹¤.
*p=3; // pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소ì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ 3으로 바꾼다.
cout << a << " " << *p << "\n"; // aì�˜ ê°’ê³¼ pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소ì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ ì¶œë ¥í•œë‹¤.
}
ì�´ê±¸ 실행하면 무엇ì�´ ì¶œë ¥ë� 까?
ì�´ê±¸ 실행하면 다ì�Œê³¼ ê°™ì�´ ì¶œë ¥ì�´ ë� 것ì�´ë‹¤.
ì�´ê±¸ 실행하면 다ì�Œê³¼ ê°™ì�´ ì¶œë ¥ì�´ ë� 것ì�´ë‹¤.
~cpp 10 10 3 3
여기서 *ì—°ì‚°ìž�를 ì�´ìš©í•˜ì—¬ *p를 ì¶œë ¥í•˜ëŠ”ê²ƒì�˜ ì�˜ë¯¸ëŠ” 무엇ì�´ëƒ� 하면...
pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소ì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ ì¶œë ¥í•˜ëŠ” 것ì�´ê³ ,
pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소는 aì�˜ 주소ì�´ë¯€ë¡œ ê²°êµ aì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ ì¶œë ¥í•˜ê²Œ ë�˜ëŠ” 것ì�´ë‹¤.
�한 *연산�를 �용하여 *p� 값� 바꾸는것�...
pì—� ì €ì •ë�˜ì–´ìžˆëŠ” 메모리 주소ì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ 바꾸는 것ì�´ê³ ,
pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소는 aì�˜ 주소ì�´ë¯€ë£Œ ê²°êµ aì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ 바꾸는 것ì�´ ë�œë‹¤.
3번째 문장 �후 *p와 a는 같� �미로 쓰�게 �는 것�다.
그래서 �러한 결과가 나타나게 �다.
pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소ì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ ì¶œë ¥í•˜ëŠ” 것ì�´ê³ ,
pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소는 aì�˜ 주소ì�´ë¯€ë¡œ ê²°êµ aì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ ì¶œë ¥í•˜ê²Œ ë�˜ëŠ” 것ì�´ë‹¤.
�한 *연산�를 �용하여 *p� 값� 바꾸는것�...
pì—� ì €ì •ë�˜ì–´ìžˆëŠ” 메모리 주소ì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ 바꾸는 것ì�´ê³ ,
pì—� ì €ìž¥ë�˜ì–´ìžˆëŠ” 메모리 주소는 aì�˜ 주소ì�´ë¯€ë£Œ ê²°êµ aì—� ë³´ê´€ë�˜ì–´ìžˆëŠ” ê°’ì�„ 바꾸는 것ì�´ ë�œë‹¤.
3번째 문장 �후 *p와 a는 같� �미로 쓰�게 �는 것�다.
그래서 �러한 결과가 나타나게 �다.
- ��터� 활용 (Call by value, Call by address)
ê·¸ë ‡ë‹¤ë©´ 과연 ì�´ëŸ° í�¬ì�¸í„°ë¥¼ ì–´ë””ì—�다가 ì�¨ë¨¹ì�„수 있ì�„까?
가장 대표ì �ì�¸ 것으로 함수 호출ì�˜ ì „ë‹¬ì�¸ìž�ì—�서ì�˜ 활용ì�„ 알아보ë�„ë¡� 하ìž�.
ë¨¼ì € 다ì�Œ ì˜ˆì œë¥¼ ë³´ê³ ê³„ì†�하ë�„ë¡� í•˜ê² ë‹¤.
~cpp
#include <iostream>
using namespace std;
void func(int a)
{
a=10;
}
void main()
{
int a;
a=3;
func(a);
cout << a;
}
�걸 실행하면 결과가 어떻게 나올까?
C++ì�„ ì œëŒ€ë¡œ ë°°ì› ë‹¤ë©´ 3ì�´ ì¶œë ¥ë�œë‹¤ê³ ë§�í• ê²ƒì�´ë‹¤.
main 함수ì—�서 aì—� 3ì�„ ëŒ€ìž…í•˜ê³ funcë�¼ëŠ” 함수를 ì¶œë ¥í•˜ë©° a를 funcì—� 넘겼다.
ê·¸ë¦¬ê³ funcì—�서는 aì—� 10ì�„ 대입했는ë�°, 그러니까 10ì�´ ì¶œë ¥ë�˜ì•¼ 하지 않ì�„까?
ê·¸ë ‡ë‹¤ê³ ìƒ�ê°�한다면.. C++ì�„ 다시 배우길 바란다.
C++ì�„ ì œëŒ€ë¡œ ë°°ì› ë‹¤ë©´ 3ì�´ ì¶œë ¥ë�œë‹¤ê³ ë§�í• ê²ƒì�´ë‹¤.
main 함수ì—�서 aì—� 3ì�„ ëŒ€ìž…í•˜ê³ funcë�¼ëŠ” 함수를 ì¶œë ¥í•˜ë©° a를 funcì—� 넘겼다.
ê·¸ë¦¬ê³ funcì—�서는 aì—� 10ì�„ 대입했는ë�°, 그러니까 10ì�´ ì¶œë ¥ë�˜ì•¼ 하지 않ì�„까?
ê·¸ë ‡ë‹¤ê³ ìƒ�ê°�한다면.. C++ì�„ 다시 배우길 바란다.
main 함수�서 a�는 변수와, func 함수�서 a�는 변수는 서로 다른 변수�다.
블ëŸ({로 시작하여 }로 ë��나는것) 안ì—�서 static ì�´ë�¼ëŠ” 키워드 ì—†ì�´ ì •ì�˜ë�œ 변수는
ì§€ì—변수ë�¼ê³ 하여 해당 ë¸”ëŸ ì•ˆì—�서만 쓸 수 있는 변수ì�´ë‹¤.
비ë¡� ê°™ì�€ ì�´ë¦„ì�´ë�¼ í• ì§€ë�¼ë�„ 다른 블ëŸì—� 있으면 다른 변수ì�¸ 것ì�´ë‹¤.
ë”°ë�¼ì„œ main 함수ì�˜ a와 func 함수ì�˜ a는 다른 것ì�´ê³ , funcì—�서 a를 10으로 바꿔봤ìž�
main 함수ì�˜ a는 변함ì�´ 없기 때문ì—� 3ì�´ ì¶œë ¥ë�œë‹¤.
블ëŸ({로 시작하여 }로 ë��나는것) 안ì—�서 static ì�´ë�¼ëŠ” 키워드 ì—†ì�´ ì •ì�˜ë�œ 변수는
ì§€ì—변수ë�¼ê³ 하여 해당 ë¸”ëŸ ì•ˆì—�서만 쓸 수 있는 변수ì�´ë‹¤.
비ë¡� ê°™ì�€ ì�´ë¦„ì�´ë�¼ í• ì§€ë�¼ë�„ 다른 블ëŸì—� 있으면 다른 변수ì�¸ 것ì�´ë‹¤.
ë”°ë�¼ì„œ main 함수ì�˜ a와 func 함수ì�˜ a는 다른 것ì�´ê³ , funcì—�서 a를 10으로 바꿔봤ìž�
main 함수ì�˜ a는 변함ì�´ 없기 때문ì—� 3ì�´ ì¶œë ¥ë�œë‹¤.
main 함수ì—�서 func 함수를 í˜¸ì¶œí• ë•ŒëŠ” main 함수ì�˜ a 변수ì�˜ ê°’ì�„
func 함수� a 변수로 복사해주는 형�으로 호출� �루어진다.
ì�´ì™€ ê°™ì�€ 호출ì�„ Call by value ë�¼ê³ 한다..
func 함수� a 변수로 복사해주는 형�으로 호출� �루어진다.
ì�´ì™€ ê°™ì�€ 호출ì�„ Call by value ë�¼ê³ 한다..
ê·¸ë ‡ë‹¤ë©´ funcì—�서 main 함수ì�˜ aì�˜ ê°’ì�„ 바꿔줄 수 있는 방법ì�€ ì—†ì�„까?
당연히 있으니까 ì�´ëŸ° 소릴 í•˜ê³ ìžˆì�„ 것ì�´ë‹¤.
��터를 사용하면 �런 것� 가능해진다.
다ì�Œ ì˜ˆì œë¥¼ 보기 바란다.
당연히 있으니까 ì�´ëŸ° 소릴 í•˜ê³ ìžˆì�„ 것ì�´ë‹¤.
��터를 사용하면 �런 것� 가능해진다.
다ì�Œ ì˜ˆì œë¥¼ 보기 바란다.
~cpp
#include <iostream>
using namespace std;
void func(int *p)
{
*p=10;
}
void main()
{
int a;
a=3;
func(&a);
cout << a;
}
앞ì—�서 í�¬ì�¸í„°ì—� 대하여 잘 ì�´í•´í–ˆë‹¤ë©´, ë³´ìž�마ìž� ì�´í•´ê°€ 됬ì�„ 것ì�´ë‹¤.
��� 설명� 필요없�꺼� 믿는다.
하지만 앞ì—�서 ì œëŒ€ë£¨ 공부하지 않ì�€ 사람들ì�„ 위해 ì„¤ëª…í•˜ê² ë‹¤.
��� 설명� 필요없�꺼� 믿는다.
하지만 앞ì—�서 ì œëŒ€ë£¨ 공부하지 않ì�€ 사람들ì�„ 위해 ì„¤ëª…í•˜ê² ë‹¤.
아까와는 달리 main 함수ì—�서 func 함수를 í˜¸ì¶œí• ë•Œ aì�˜ 메모리 주소를 넘겨 주었다.
ê·¸ë¦¬ê³ ê·¸ 메모리 주소를 func 함수ì—�서는 pë�¼ëŠ” í�¬ì�¸í„°ë¡œ ë°›ê³ ìžˆë‹¤.
ë˜�한 func 함수ì—�서 p í�¬ì�¸í„°ê°€ ê°€ì§€ê³ ìžˆëŠ” 메모리 주소ì�˜ ê°’ì�„ ë°”ê¾¸ê³ ìžˆë‹¤.
p í�¬ì�¸í„°ëŠ” main 함수ì�˜ aì�˜ 주소를 ê°€ì§€ê³ ìžˆìœ¼ë¯€ë¡œ ê²°êµ main 함수ì�˜ aê°€ 바뀌게 ë�˜ëŠ” 것ì�´ë‹¤.
그래서 ì¶œë ¥ì�€ 3ì�´ 아닌 10ì�´ ë�œë‹¤.
ê·¸ë¦¬ê³ ê·¸ 메모리 주소를 func 함수ì—�서는 pë�¼ëŠ” í�¬ì�¸í„°ë¡œ ë°›ê³ ìžˆë‹¤.
ë˜�한 func 함수ì—�서 p í�¬ì�¸í„°ê°€ ê°€ì§€ê³ ìžˆëŠ” 메모리 주소ì�˜ ê°’ì�„ ë°”ê¾¸ê³ ìžˆë‹¤.
p í�¬ì�¸í„°ëŠ” main 함수ì�˜ aì�˜ 주소를 ê°€ì§€ê³ ìžˆìœ¼ë¯€ë¡œ ê²°êµ main 함수ì�˜ aê°€ 바뀌게 ë�˜ëŠ” 것ì�´ë‹¤.
그래서 ì¶œë ¥ì�€ 3ì�´ 아닌 10ì�´ ë�œë‹¤.
ì�´ì™€ê°™ì�´ 함수 호출ì—�서 주소를 사용해 ì „ë‹¬ ì�¸ìž�를 넘겨주는 방법ì�„
Call by address ë�¼ê³ 한다.
Call by address ë�¼ê³ 한다.
�것 외�� Call by reference �는 방법� 하나 � 있다.
ì�´ê²ƒì�€ í�¬ì�¸í„° ë§�ê³ ì°¸ì¡° ë�¼ëŠ” 것ì�´ 있는ë�°, ì�´ 참조를 ì�´ìš©í•œ 방법ì�´ë¯€ë¡œ 참조를 ì„¤ëª…í• ë•Œ 하ë�„ë¡� í•˜ê² ë‹¤.
ì�´ê²ƒì�€ í�¬ì�¸í„° ë§�ê³ ì°¸ì¡° ë�¼ëŠ” 것ì�´ 있는ë�°, ì�´ 참조를 ì�´ìš©í•œ 방법ì�´ë¯€ë¡œ 참조를 ì„¤ëª…í• ë•Œ 하ë�„ë¡� í•˜ê² ë‹¤.
4.7. ì¤‘ê°„ê³ ì‚¬ 시험-_-ë¬¸ì œ ¶
- 그런ë�°.. 여기 있는걸 ë‹¤í• í•„ìš”ê°€ 있ì�„까?--;
- 여기 있는게 기본 아닌가.. ì�´ê±´ 필히 알아야 ë�„움ì�´ ë� ê±° ê°™ì�€ë�°.. --ì„ í˜¸
- enum, union, pointer ê°™ì�€ê±´ 안해ë�„ ë�˜ë ¤ë‚˜? -.-; pointer 는 ë�”ë�”ìš± í•´ì•¼í• ê±° ê°™ì�€ë�°.. --ì°½ì„
- ��터는 내가 해주마..ㅋㅋ --�규
- ì�¼ë‹¨ 하루 ë‚ ìž¡ì•„ì„œ 하는거니까.. 너무 무리하지는 ë§�ìž�. 글구 enum,union ê±°ì�˜ 안쓰지 않ëƒ�? --ì�¸ìˆ˜
- í�¬ì�¸í„°ëŠ” ë� í•„ìˆ˜ê³ .. ìƒ�규가 ìž�ì‹ ìžˆë‹¤ë‹ˆê¹Œ 함 맡겨볼까
- http://www-h.eng.cam.ac.uk/help/mjg17/teach/CCsummary/CCsummary-html.html
ì–´ì œ 여기ì—�서 C++ 30ë¶„ë§Œì—� 훑어 봤다 함 ë´�ë°” ìº ë¸Œë¦¬ì§€ 대학 ìž�료당 -재ë�™
- enum, union등ì�€ 있다는 것만 ì•Œë ¤ì£¼ê³ ë„˜ì–´ê°€ëŠ”ê²Œ 나ì�„ 듯. ê·¼ë�° ì�´ 세미나 좀 ê¸¸ì–´ì§€ê² ëŠ”ë�°? --병í�¬
- ì�´ì œ 구체ì �으로 ì�¼ì •ì�„ 잡았으면 ì¢‹ê² ë‹¤...--ìƒ�ê·œ
- í�‰ì�¼ë‚ 한다면 ìš°ì„ ì�€ 02들 시간표ì—� 맞춰서 시간ì�„ ë‚´ê³ ê±°ê¸°ì—� 맞는 강사들ì�´ 들어가기로 하ìž� 주ë§�ì—� 한다면 ë� ìƒ�ê´€ 없지만...^^ --재ë�™
- ì „ c 세미나를 ì¤€ë¹„í•˜ê³ ìžˆëŠ” 00학번 김남훈ì�´ë�¼ê³ 하는ë�°ìš”. c++ 세미나가 ì œê°€ í•˜ëŠ”ê±°í•˜ê³ ìƒ�당부분 중복ë�˜ëŠ”ë“¯ 한ë�°.. ì–´ì©Œì£ ? 사실 02학번ì�´ ì¤‘ê°„ê³ ì‚¬ê¹Œì§€ ë°°ìš´ë‚´ìš©ì—� 대해 세미나를 í•œë‹¤ê³ í•˜ë©´, c 나 cpp ê°€ 그다지 ì°¨ì�´ê°€ 없기ë�„ í•˜ê³ . ì�¼ë‹¨ ì €ëŠ” 10ì�¼ì—� í• ê¹Œ ìƒ�ê°�중입니다.
- 그럼 남훈ì�´í˜•ì�´ c기초를 í•´ì£¼ì‹œê² ì–´ìš”? for,if ì�´ëŸ°ê±°.. 그럼 ì €í�° ì €í�¬ê°€ 준비한 í�¬ì�¸í„°ì™€ oopì�´ëŸ°ê±° í•´ë³¼ ìƒ�ê°�입니다.
- 윗분ì�€ ëˆ„êµ¬ì‹ ì§€.. 그럼 ì œê°€ 기초를 í•˜ì£ . 그런ë�° 02한테 지금 oop 를? ; ê·¸ë¦¬ê³ .. í�¬ì�¸í„° í• ë•ŒëŠ” ì œê°€ 서í�¬íЏ 갈께요;; -zennith
- í�¬ì�¸íŠ¸ë¥¼ 하니 ë˜� 재복ì�´ê°€ ìƒ�ê°�나는 êµ°......재복ì�´ëŠ” 잘 êµ¬ë¥´ê³ ìžˆë‚˜...ì•„..ì�´ì œ 구를 때는 갔군..ì–¸ì œ ì œëŒ€ë�”ë�¼~
- 세미나 ë�„대체 ì–¸ì œ í• êº¼ëƒ�? -- ìƒ�ê·œ









