const

I.T/Programming 2011. 4. 8. 09:39
반응형

/* 첫번째 예제 */
#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;

}

반응형
Posted by Rainfly
l