C++Builder
|
Delphi
|
FireMonkey
|
C/C++
|
Free Pascal
|
Firebird
경고!
게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[419]
쉽게 구조체를 초기화 하는 방법.
김태선
[
jsdkts
]
10525 읽음
2004-02-02
15:33
구조체는 프로그램에서 아주 많이 쓰는데 이를 초기화 해야 할 경우가 많습니다.
가령
void Procedure(...)
{
tagUSER user;
보통 0로 초기화 할때..
ZeroMemory(&user, sizeof(tagUSER));
식으로 많이 쓰죠.
그런데 이렇게 한줄에 처리하는 방법도 있더군요.
tagUSER user = { 0, };
이러면 컴파일러가 알아서 나머지 항목을 0으로 다 넣어줍니다.
물론 위 예에서는 tagUSER 구조의 첫번째 항목은 0으로 초기화 될수 있는 것이어야 하겠죠.
C++Builder, VC++ 다 지원합니다.
구조체중에 몇가지 항목을 0으로 초기화 시키기 위한 코드를 몇줄 더 늘이는 일이 없어지겠죠. ^^;
}
Trackback :
http://cbuilder.borlandforum.com/impboard/impboard.dll/trackback?sn=56993
빈센트
[
kaisar
]
2004-02-05
10:02
X
그런 방법도 있었군요..
비밀
[
roseria
]
2004-02-14
21:36
X
제가 아는바로는 memset이나 Zeromemory를 이용한 것은 프로그램이 실행되고 해당 함수가 호출되어서 초기화를 시킵니다. 그런데 위의 방법은 컴파일러에 의해 정적으로 초기화 하는 방법입니다. 그리고, BC++에서는 어찌될지 모르지만 ... 구조체를 아주 크게 잡은 다음 위와 같은 방법의 초기화루틴을 작성하시고 빌드시켜보세요, 그리고, 빌드된 실행파일의 크기를 살펴보세요.
유광희
[
yurchi
]
2004-04-14
15:59
X
맞아요.
char a[1024 * 1024 * 1024] = {0x00, }
해보세요.
.EXE 파일 사이즈을 보는 순간 미쳐버릴 겁니다.
아주 적은 용량일때만 유용하죠~ ^^
유광희
[
yurchi
]
2004-04-14
16:03
X
헉 위 코드 해보니깐 .exe 를 생성을 못하는군요 -.-
char a[1024 * 1024 * 10] = {0x00, } 이렇게만 해보세요
10메가가 부쩍 늘어납니다.
구조체에 이렇게 큰 배열을 넣을 일은 없을테니, 위에 본론에 맞게 알맞게 사용하세요~
왕다솜
[
dasom
]
2004-06-11
14:49
X
배열도 되는 걸로 알고 있습니다.
int a[10] = {0};
근데 님 방법보단 선언과 동시에 초기화가 가능한 걸로 알고 있습니다.
씨언어에서 하듯이어여..근데 ㅆ++에선 구조체도 하나의 public 클래스이기 때문에 내포형식으로 들어가는 구조체는 안되는 걸로 알고 있습니다 (순 제 생각)
선언과 동시에 초기화하는 클래스
struct tag {
int a;
char a*;
} NAME = { 0, "왕다솜"};
+
-
관련 글 리스트
419
쉽게 구조체를 초기화 하는 방법.
김태선
10525
2004/02/02
제목
내용
이름
Copyright © 1999-2015, borlandforum.com. All right reserved.