c++ - char a[100] = {'\0'}与memset(a, 0, sizeof(a))有什么区别?
天蓬老师
天蓬老师 2017-04-17 15:24:09
0
7
1484

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(7)
大家讲道理

으아악

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

으아악

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

그리고

으아악

과 동일합니다. 으아악
大家讲道理

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

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

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

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

巴扎黑

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

小葫芦

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

洪涛

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

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

Peter_Zhu

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

PHPzhong

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿