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

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..


댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.