C++ Prime by Prata Ch. 4 Compound types

Introducing Arrays

short arrSome[12];
int arrNumb[22 * sizeof(int)]; // 변수는 불가.  항상 type 명시.
int yamcosts[3] = {20, 30, 5}; // create, initialize array
cout << "\nSize of yams array = " << sizeof yams; // 어레이 전체 크기 in bytes.
cout << "\nSize of element = " << sizeof yams[0] ; // int 크기.

인덱스(or subscript)를 통해 access ..

Compound type, Derived type (c 에서)
** class is the bastion of OOP …

Program Notes

초기화 안하면 개비지 값이 들어감.

Initialization Rules for Arrays

int cards[4] = {2, 3, 33, 332};  // 정의와 함께(만) 초기화 가능..
int errArr[3];  // OK
errArr[4] = { 2, 2, 3, 3}  // Error.
errArr = cards;  // Error
float hotelTips[5] = {3.0, 2,2}; // 적은 멤머로 초기화는 가능..  나머지는 0으로 세팅.
short howMany[] = { 1, 2, 333 }; // 3개의 어레이로 초기화.

C++11 Array Initialization

double dropEq[4] { 1e4, 1.6e4, 1.1, 4.88e4 }; // = 없이 가능.
float allEqual[100] {}; // 모든 멤버를 0으로 초기화 가능.
long ppp[] = { 23, 23, 3.3} ; // narrowing...  불가.
char sss[4] { 'h', 'i', 1122011, '\0' }; // narrowing.. 1122011 이 범위 밖..
char sss[4] { 'h', 'i', 112, '\0' }; // 112가 작은 수이므로 가능..

STL 에서는 vector 를 통해 대안 제시.

Strings

1> C-style string.   2> string class
C style : 끝 문자는 ‘널’  .. Ascii value is 0

char dog[3] = { 'b', 'c', 'd' }; // not a string  __ arrays of char..
char dog1[3] = { 'b', 'c', '\0' }; // it's a string

Concatenating String Literals

한 스페이스 ‘ ‘ 사이의 스트링은 하나로 인식..

cout << " some   " "  strings " ;

조인한다고 스페이스를 추가하지는 않음. 단순히 붙이는 역할.

Using Strings in an Array

어레이 사이에 ‘\’ 이 있으면 그 이하는 인식 안 함.. => 중간에 널을 넣어 사용 가능..

char name[15];
cin >> name; // User 인풋..
name[4] = '\0'; // 이러면 그 이전만 인식..

Program Notes (p124)

size 와 strlen 차이점..  스트링 abc 를 담기 위해선 strlen(“abc”) + 1 이 필요.

Adventures in String Input

cin 에서는 스페이스, 탭, 엔터 등을 널로 취급..

Reading String Input a Line at a Time

__

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중