C 언어 - 배열/구조체 초기화
typedef struct{
char MerchantID[128];
char MobileToken[36];
}Test_Data;
void testStructInit()
{
Test_Data struData = {1};
int i;
for (i = 0 ; i < sizeof(struData); i ++)
{
printf("%02x ", (char)*(((char *)&struData) + i));
}
printf("
");
return;
}
int main(void)
{
testStructInit();
return 0;
}
질문:
함수testStructInit에 대한 정의와 초기화 문장:struData={1};
먼저 결론을 말하다.
TestData struData = {1} 또는 TestData struData = {1}은 첫 번째 요소를 초기화하는 것 외에 이 변수의 모든 다른 요소를 0으로 초기화합니다.
코드 분석:
106: Test_Data struData = {1};
0040133E C6 85 5C FF FF FF 01 mov byte ptr [ebp-0A4h],1
00401345 B9 28 00 00 00 mov ecx,28h
0040134A 33 C0 xor eax,eax
0040134C 8D BD 5D FF FF FF lea edi,[ebp-0A3h]
00401352 F3 AB rep stos dword ptr [edi]
00401354 66 AB stos word ptr [edi]
00401356 AA stos byte ptr [edi]
mov byte ptr [ebp-0A4h],1 // 1, 。 C 。
mov ecx,28h //ecx 28h,ecx (counter), (REP) LOOP 。
xor eax,eax // eax 0
lea edi,[ebp-0A3h] // edi struData
rep stos dword ptr [edi] // eax edi , ecx 。
// , dword,4
stos word ptr [edi] // word , 2 ,eax edi
stos byte ptr [edi] // byte , 1 ,eax edi
// , :
// , , sizeof(struData)-1
// A4h-1=A3h , CPU dword(4 ) ,
rep stos dword ptr [edi] // 4*28h, A0h 。
// 3 , 。
mov byte ptr [ebp-0A4h],1 -> | |
rep stos dword ptr [edi] -> | ( 4 )|
stos word ptr [edi] -> | 3 , 2 (word)|
stos byte ptr [edi] -> | 1 , byte |
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로그'메타프로그램 루비 버전 2'3장 읽기동적 방법 Object#send 호출 방법은 약간 메모와 Object#send obj.send(:my_method, 3) Object#send를 사용하면 어떤 방법으로든 호출할 수 있습니다. privete 방법을 호...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.