C++/Data Structures
C++ Data Structures
Soul-Learner
2016. 12. 22. 18:19
C++ 프로그래밍, 구조체 ( Data Structures )
C언어의 구조체와 C++의 구조체의 주요 차이점
- C언어의 구조체에는 함수를 선언할 수 없지만 C++에서는 가능하다
- C언어에 구조체에는 static 멤버를 선언할 수 없지만 C++에서는 가능하다
- C언어의 구조체 변수를 생성할 때는 struct 키워드가 필요하지만 C++에서는 필요 없다
- C언어의 구조체는 포인터 변수를 사용할 수 있지만 C++에서는 포인터, 참조 변수 모두 가능하다
#include <iostream> #include <locale> using namespace std; struct User { wstring id; int pass; }; // }과 ; 사이에 다수개의 구조체 변수를 쉼표(,)로 구분하여 선언할 수도 있다 void printUser(User user) { // 구조체 값을 받아서 멤버를 출력하는 함수 wcout << "id=" << user.id << ", pass=" << user.pass << endl; } void printUser(User* pUser) { // 구조체 주소를 받아서 멤버를 출력하는 함수 wcout << "id=" << pUser->id << ", pass=" << pUser->pass << endl; } void printUserRef(User& user) { // 구조체 참조변수를 파라미터로 받는다 wcout << "id=" << user.id << ", pass=" << user.pass << endl; } int main() { setlocale(LC_ALL,""); wcout << L"C++ 구조체 다루기" << endl; // 구조체 변수 선언(C언어에서는 반드시 struct 키워드를 사용해야 했다. 그러나 C++은 필요 없음) User user1 = {L"김인철", 1111}; // 구조체 변수의 선언과 초기화를 동시에 하는 경우 wcout << "id=" << user1.id << ", pass=" << user1.pass << endl; User user2; // 구조체 초기화 두번째 방법 user2.id = L"홍길동"; user2.pass = 2222; wcout << "id=" << user2.id << ", pass=" << user2.pass << endl; // 구조체 포인터 변수 User* pUser; User user; pUser = &user; pUser->id = L"박지성"; pUser->pass = 3333; wcout << "id=" << pUser->id << ", pass=" << pUser->pass << endl; printUser(user1); // 함수의 파라미터에 구조체 값을 전달 printUser(pUser); // 함수의 파라미터에 구조체 주소를 전달 printUserRef(user2); // 구조체 참조 전달 return 0; }