2015. 2. 17. 11:39


■ ( const char * ) 상수형 문자에 대한 포인터. 포인터가 가리키는 변수의 을 바꿀 수 없음

#include <iostream>

int main()

{

    char ch1 = 'a';

    char ch2 = 'b';

    const char * pch;

    pch = &ch1;

    std::cout << *pch << std::endl;

    //*pch = 'c';  //에러  error: assignment of read-only location ‘* pch’

    pch = &ch2;

    std::cout << *pch << std::endl;


    return 0;

}

$ constchar

a

b



■ ( char const  * ) 문자에 대한 상수형 포인터. 포인터 값을 바꿀 수 없음

#include <iostream>

int main()
{
    char ch1 = 'a';
    char ch2 = 'b';
    char * const pch = &ch1;
    std::cout << *pch << std::endl;
    *pch = 'c';
    std::cout << *pch << std::endl;
    //pch = &ch2;   //에러 error: assignment of read-only variable ‘pch’
    std::cout << *pch << std::endl;

    return 0;
}

$charconst

a

c



■ ( const char const  * ) 상수형 문자에 대한 상수형 포인터. 

  포인터가 가리키는 변수의 과 포인터 값 을 바꿀 수 없음


#include <iostream>

int main()
{
    char ch1 = 'a';
    char ch2 = 'b';
    const char * const pch = &ch1;
    std::cout << *pch << std::endl;
   //*pch = 'c'; //error: assignment of read-only location ‘*(const char*)pch’ !! 문자값 못바꿈 
    std::cout << *pch << std::endl;
    //pch = &ch2; // error: assignment of read-only variable ‘pch’ 포인터 값 못바꿈!
    std::cout << *pch << std::endl;

    return 0;
}


$charconst

a






여기서 새로 발견한것! 당연한거지만!

char * const pch = 'c';

 error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]

 문자열이 아닌 'c' 문자 하나만 써주면! 에러가 뜬다.



문자열로 선언해주면, warning이뜬다. 

char * const pch = "c";


 warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

 char * const pch = "c";



Posted by Triany