[완료] char 배열의 초기화

ghzradio의 이미지

1) char ch[10] = {0};
2) char ch[10] = "";

1번은 ch배열의 모든요소들을 0으로 초기화 하고,
2번은 ch배열의 첫번째 요소만 0으로 초기화 하는것인가요? 아니면 1과 동일한 초기화 방법인가요?

ifree의 이미지

돌려보면 금방 나올텐데.

1) 은 첫번째 요소를 0 나머지는 널, 2) 는 모두 널.

planetarium의 이미지

그럼 한가지 묻겠습니다. 널과 0 사이에 다른점이 뭘까요... ^^;;

1) 은 모두 0으로 초기화되고...
2) 는 확첫번째 원소만 0이 될것 같네요.
배열 초기화할 때 정해진 원소 갯수보다 적게 초기화하면 나머지는 0이 되는걸로 알고 있어요.
2번은 확실히는 모르겠군요.
gcc 4.3 에서는 1) 2) 둘다 모든 원소를 0으로 초기화 해주네요.

ifree의 이미지

표준적으로 캐릭터 셋의 경우에 null character는 0으로 인코딩되므로 실질적인 값이나 동작은 같다고 보아야겠네요.
저는 개념적으로는 다른 것으로 생각하고 있습니다.

coremaker의 이미지

1)은 char 배열에 첫번째 원소를 0이라는 정수로 초기화 하고 나머지를 NULL 처리한 것이고,
2)은 char 배열에 첫번째 원소를 NULL이라는 캐릭터 값으로 초기화 하고 나머지를 NULL처리한 것입니다.

char 에서 0을 NULL 과 동일하게 사용함으로.. 모두 0으로 초기화 한다고 생각하겠지만,
실제 동작은 위와 같습니다.

확실한것은 0이 아닌 다른 값을 넣어보면 확실하게 알 수 있습니다.
첫번째 배열만 변경되고 나머진 0(NULL)로 초기화 되는 것을 볼 수 있을 것입니다.

hys545의 이미지

즐린

포인터 변수같은 걸 null로 초기화하면
null pointer가 들어갑니다.

즐린

a287848의 이미지

Quote:
char 에서 0을 NULL 과 동일하게 사용함으로.. 모두 0으로 초기화 한다고 생각하겠지만,

배열에서 첫번째 요소라도 생성과 동시에 값을 주면 나머지는 초기화가 됩니다.

Local 변수일경우

Quote:

If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.

Dig it.

Dig it.

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.