如题所 char a[100] = {'0'} 与 memset(a, 0, sizeof(a)) 什么区别?
大家讲道理2017-04-17 15:26:09
으아악
a[0]
을 '0'
으로 초기화하고, 이후 요소값을 0, 즉 '여기에 바 0이 있다'로 초기화합니다. (바는 나올 수 없습니다)
그렇다면
첫 번째 요소는 'bar 0'으로 초기화되고 후속 요소는 여전히 값 초기화됩니다.
그리고
으아악은
과 동일합니다. 으아악大家讲道理2017-04-17 15:26:09
배열 a[]
의 내용을 0으로 설정하는 효과가 있지만. 그러나 두 코드는 완전히 다른 상황에서 사용되며 서로를 대체할 수 없습니다.
char a[100] = {0}
은 배열 변수를 선언하고 초기화합니다. 그 전에는 a[]
이 없었어요.
memset(a, 0, sizeof(a))
은 a[]
이 이전에 선언된 후 내용을 삭제합니다. 그 전에는 a[]
이 이미 존재했습니다.
또한 memset
은 라이브러리 기능이지 언어 자체의 기능은 아닙니다.
巴扎黑2017-04-17 15:26:09
char a[100] = {'0'} 내용은 컴파일 타임에 결정될 수 있지만 memset은 런타임까지 내용을 지정된 값으로 설정하지 않습니다
高洛峰2017-04-17 15:26:09
하나는 문자 0(0x30)으로 채우는 것이고 다른 하나는 0을 사용하는 것입니다. 그리고 C99는 자동으로 '0' memset을 추가하지 않는 것 같습니다. 그 의미는 주소의 특정 영역을 문자로 채우는 것입니다. 지정된 내용
PHP中文网2017-04-17 15:26:09
char a[]
얻은 a는 스택에 있을 수도 있고, 전역 변수일 수도 있지만 존재합니다
memset은 할당을 유발하지 않으며 어디에나 있을 수 있습니다.
天蓬老师2017-04-17 15:26:09
a[100] = {0};은 쉬운 코딩을 위해 변수 메모리를 빠르게 초기화하는 구문 설탕으로 간주할 수 있습니다. 범위에 들어갈 때 한 번만 실행됩니다. 물론 범위에 들어갈 때 다시 실행할 수도 있습니다. 자꾸.
Memset은 메모리 설정을 위한 일반적인 함수로 언제든지 호출할 수 있습니다.
PHPz2017-04-17 15:26:09
char a[100] = {0}은 정적으로 0으로 초기화되고, 프로그램 실행 전에 해당 메모리는 0입니다
memset()은 동적으로 0으로 초기화되며, 프로그램 실행 시 해당 메모리가 지워집니다.