/* 첫번째 예제 */
#include <iostream>
#include <string>
using namespace std;
void main()
{
int age = 39; // 일반 변수
const int * pt = &age; // const 포인트 변수
//포인터 pt가 const int를 지시하므로, *pt로 값을 수정할 수 없다.
//하지만 age는 cont int가 아니므로, age로는 값을 수정할 수 있다.
//const 포인트 변수에 새로운 주소는 대입가능하나, 그 주소의 값을 변경은 힘들다.
const int earth = 10; // const 변수
const int * pe = &earth; // const 포인트 변수
//earth나 *pe로 값을 변경 불가능하다.
const int moon = 15; // const 변수
int * pk = &moon; // 일반 포인트 변수 - 불가능함
// const 변수를 일반 포인트 변수가 참조 불가능하다.
// 일반 포인트변수로 const 변수를 조작할 수 있기 때문이다.
int temp = 12;
int temp2 = 1;
const int * p = &temp; // const int_p
*p = 20; // const int형을 가리키는 포인트변수이기때문에 값변경 불가능
p = &b; // 주소는 변경 가능
int * const t = &temp; // int_p const
*t = 20; // int형을 가리키는 포인트 const 변수이기때문에 값변경 가능
t = &b; // 가리키는 주소는 변경 불가능
// const type * name 로 선언되면 값변경 불가능('const type' can't edit)
// type * const name 로 선언되면 참조하는 주소값변경 불가능('const point' can't edit)
// 음 그러니깐, const가 자료형에 붙으면 그 자료값이 변경불가능하고
// const가 변수명에 붙으면 그 변수가 가리키는 주소를 변경 불가능함.
}
/* 두번쨰 예제*/
#include <iostream>
#include <cstring>
using namespace std;
int show_num(const char * str, char ch)
{ // const char 이므로 값변경 불가능 str이 참조하는 주소는 변경가능
int count = 0;
while(*str){ // *str이 '\0'이면 루프 탈출
if(*str == '\0') cout << "널갯수추가" << *str << "\n"; // space bar가 null이 아니라는 걸 말해줌
if(*str == ch) count++; // 해당문자 검출시 카운트 증가
str++; // 다움문자 이동
}
return count;
}
int main()
{
const src_size = 20;
char sr[src_size];
char st[src_size];
gets(sr);
gets(st);
int ms = show_num(sr, 'm');
int us = show_num(st, 'u');
cout << sr << "에는 m이 " << ms << "개 있습니다\n";
cout << st << "에는 u가 " << us << "개 있습니다\n";
return 0;
}
'I.T > Programming' 카테고리의 다른 글
unexpected end of file while looking for precompiled header directive : compile error (0) | 2011.04.21 |
---|---|
함수오버로딩, 디폴트인자, 함수템플릿 (0) | 2011.04.08 |
함수를 가리키는 포인터변수 (0) | 2011.04.08 |
참조 전달 인자 '&' (0) | 2011.04.08 |
new 와 delete 함수 (0) | 2011.04.08 |