본문 바로가기

Pointer

[C, C++] Class C와 C++의 차이중 가장 큰 것이 바로 Class개념입니다. 현재에도 Class는 java나 C#그리고 VB.NET에까지 다양한 언어에서 객체지향프로그래밍(OOP)으로 Class개념이 사용되고 있습니다. C++에서 Class는 원래 C의 구조체를 좀더 효휼적으로 바꾸고자 해서 등장했다는 얘기가 있습니다. 실제로 정말 그런지는 확실하지 않지만 만일 C에서 구조체를 접해보신 경우라면 'C의 구조체에 변수 Member와 더불어 함수까지도 포함시킬 수 있게 한것이 Class다.' 라고 이해(꼭 그렇다는 것은 아니지만...)하시면 될듯 합니다. 다음은 C++에서 구조체를 활용한 예입니다. #include #include main() { struct exam{ char name[15]; int kuk; int m.. 더보기
[C, C++] 구조체 구조체는 서로 연관된 변수(Data)를 한곳에 묶어놓은 형태를 말합니다. 예를 들어 어떤 학생의 국어, 영어, 수학 성적을 관리하기 위해 다음과 같이 변수를 선언하였을때 int kuk; int eng; int mat; 위 변수를 구조체로 묶으려면 다음과 같이 선언될 수 있습니다. struct score { int kuk; int eng; int mat; }; 이때 구조체는 구조체 내부에서 또 다른 구조체를 포함할 수 있습니다. struct score { int kuk; int eng; int mat; }; struct total_score { int t_kuk; int t_eng; int t_mat; struct score sre; }; } total_score구조체 안에 score구조체를 포함하고 있습.. 더보기
[C, C++] malloc함수와 구조체를 통한 연결 List(리스트) 구현 1. malloc C언어에서 동적으로 Memory를 할당하려면 malloc함수를 이용합니다. 이 함수는 인수로 전달된 정수만큼의 byte크기를 Memory에서 할당하고(만일 할당에 실패하면 NULL을 반환합니다.) 할당된 Memory주소를 Pointer로 반환합니다. #include #include main() { char *p; p = (char *)malloc(10); } 10 byte의 Memory확보 후 해당 Memory위치를 Pointer p에 되돌립니다. 참고 : malloc()함수사용시 반환부분에 (char *)형으로 변환시켜 주는 이유는 malloc()함수가 Memory를 확보한 후 해당 Pointer를 반환할때 형이 없는 void(*)를 반환하기 때문입니다. 이는 반환되는 Memory영역.. 더보기
[C, C++] Pointer 다음 Program은 변수를 활용한 간단한 예제입니다. #include main() { int i; i = 100; printf("i값 : %d\n", i); } 이 Program은 결과로 i값을 출력합니다. 이 Program은 변수 i에 3이라는 값을 넣고 다시 i변수를 통해 해당 값을 출력하도록 작성된 예제입니다. 그런데 Computer의 입장에서 보면 단순히 변수 i가 있다는 것에서 끝나지 않습니다. 변수 i가 선언되면 Memory에 integer형의 Data를 담을 수 있는 공간을 확보하고 그 안에 3이라는 정수값을 저장합니다. 이때 저장된 해당 위치를 Memory의 Address라는 주소형태로 구분해야 합니다. 만일 변수라는 개념이 없이 개발자가 직접 Memory주소를 가지고 Data를 다루게 .. 더보기