찾다

 >  Q&A  >  본문

c++ - char a[100] = {'\0'}与memset(a, 0, sizeof(a))有什么区别?

如题所 char a[100] = {'0'} 与 memset(a, 0, sizeof(a)) 什么区别?

天蓬老师天蓬老师2803일 전1488

모든 응답(7)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-17 15:26:09

    으아악

    a[0]'0'으로 초기화하고, 이후 요소값을 0, 즉 '여기에 바 0이 있다'로 초기화합니다. (바는 나올 수 없습니다)
    그렇다면

    으아악

    첫 번째 요소는 'bar 0'으로 초기화되고 후속 요소는 여전히 값 초기화됩니다.

    그리고

    으아악

    과 동일합니다. 으아악

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:26:09

    배열 a[]의 내용을 0으로 설정하는 효과가 있지만. 그러나 두 코드는 완전히 다른 상황에서 사용되며 서로를 대체할 수 없습니다.

    • char a[100] = {0}은 배열 변수를 선언하고 초기화합니다. 그 전에는 a[]이 없었어요.

    • memset(a, 0, sizeof(a))a[]이 이전에 선언된 후 내용을 삭제합니다. 그 전에는 a[]이 이미 존재했습니다.

    또한 memset은 라이브러리 기능이지 언어 자체의 기능은 아닙니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:26:09

    char a[100] = {'0'} 내용은 컴파일 타임에 결정될 수 있지만 memset은 런타임까지 내용을 지정된 값으로 설정하지 않습니다

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 15:26:09

    하나는 문자 0(0x30)으로 채우는 것이고 다른 하나는 0을 사용하는 것입니다. 그리고 C99는 자동으로 '0' memset을 추가하지 않는 것 같습니다. 그 의미는 주소의 특정 영역을 문자로 채우는 것입니다. 지정된 내용

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 15:26:09

    char a[]얻은 a는 스택에 있을 수도 있고, 전역 변수일 수도 있지만 존재합니다

    memset은 할당을 유발하지 않으며 어디에나 있을 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:26:09

    a[100] = {0};은 쉬운 코딩을 위해 변수 메모리를 빠르게 초기화하는 구문 설탕으로 간주할 수 있습니다. 범위에 들어갈 때 한 번만 실행됩니다. 물론 범위에 들어갈 때 다시 실행할 수도 있습니다. 자꾸.
    Memset은 메모리 설정을 위한 일반적인 함수로 언제든지 호출할 수 있습니다.

    회신하다
    0
  • PHPz

    PHPz2017-04-17 15:26:09

    char a[100] = {0}은 정적으로 0으로 초기화되고, 프로그램 실행 전에 해당 메모리는 0입니다
    memset()은 동적으로 0으로 초기화되며, 프로그램 실행 시 해당 메모리가 지워집니다.

    회신하다
    0
  • 취소회신하다