데이터 형변환에 대한 질문입니다.

ssif의 이미지

구조체를 다음과 같이 선언/정의 했습니다.

struct login
{
    char lin[LOGIN_LIN];      
    char login_id[LOGINBUF];
    char login_pw[LOGINBUF];
};

struct login Login;

이것을 send()로 보내려고 합니다.그래서 다음과 같이 했습니다.

send(hSocket,(char *)&Login,sizeof(Login),0);

send() 의 원형은 다음과 같이 되어있는것을 확인했습니다.

int send(
  SOCKET s,
  const char* buf,
  int len,
  int flags
);

두번째 인자의 데이터형이 const char* 인데 단순히 char*로만 형변환을 해주어도 되는지 궁금합니다.컴파일은 이상없이 되고있습니다.컴파일 환경은 윈도우 버전 dev c++ 4.9.9.2에 있는 gcc를 사용했습니다.

BarracuTa의 이미지

const 는 상수화에 관한걸로 알고있습니다..

send 에 원형에서 두번째 인자가 const char* buf 이므로 넘겨누는 LOGIN struct에 대하여 send안에서 상수화되어진다를 의미합니다.

^^

첫 답글이네요

저희 업소를 방문해 주셔서 감사합니다.

pool007의 이미지

상관없습니다. char* -> const char * 은 가능합니다.
반대로 const char * -> char *은 const_cast<..>를 해주어야하지만요.

--
Passion is like genius; a miracle.

hey의 이미지

BarracuTa님의 설명을 보완하자면, 'send 안에서 상수화된다'는 말의 실뜻은, send 안에서 buf 값이 변경되지 않을테니 안심해라는 것이죠.

pool007님의 설명에서처럼 const char*가 char*로 변환되지 않는 것은 그 반대의 이유일 것이구요.


----------------------------
May the F/OSS be with you..