여사모 ¶
- 여행을 사랑하는 모임
- 여름을 사랑하는 모임
- 여자를 좋아하는 사람들의 모임
주제 ¶
- C++자료구조.
참가원 ¶
- 대장 : 구자겸
- 차장 : 진성훈, 이재환, 이승한
목표 ¶
배열, 구조체, 스택, 큐, 링크드 리스트, 이진트리(-_-;)등의 자료구조를 통한 C공부!
공지 ¶
- 다음 주제는 문자열(String), 스택(Stack)과 큐(Queue) 입니다. 단어 뜻 정도는 알아오는게 좋겠죠?
- 다음 스터디 일정 - 6월 4일 금요일 7시 7피(회의끝나고)
과제 ¶
승한이 궁금증 ¶
~cpp
#include <iostream>
using namespace std;
#include <string.h>
int main()
{
int b=4;
cin>>b;
char *a = new char[b];
cout << strlen(a);
return 0;
}
왜 1을 입력하면 7, 8을 입력하면 23이 나오는 게야!!
- 아마도 문자열이 초기화가 안돼서인것 같다. strlen()함수는 char *(캐릭터형 포인터)을 전달인자로 받지.
이 포인터가 가리키는 주소부터 시작해서 주소가 NULL인 주소가 나올 때까지 카운트를 해서 그 값을 리턴하는
게 strlen()함수야. 문자열을 초기화할 때에는 예를 들어 char * arr = "ABCDE"; 라고 하면 arr5에는 자동
으로 NULL이 들어가게 되 있거든. 그런데 위에서 초기화를 안 해줬으니 메모리 상에 있는 쓸데없는 데이터들
때문에 이상한 값이 출력되는 거지. cout << a; 라고 해보면 이상한 문자들이 출력되는게 보일꺼야. 7,8을 입력
했을때 23이 나오는 것은 포인터 a가 가리키고 있는 주소+23에 NULL문자가 들어 있다는 뜻이지.
- 아, 그리고 new연산자는 charb가 저장될 만큼의 메모리를 확보해서 그 주소를 포인터a에 넘겨주는 거지
배열은 만드는 명령문이 아니야.
- 아마도 문자열이 초기화가 안돼서인것 같다. strlen()함수는 char *(캐릭터형 포인터)을 전달인자로 받지.
이 포인터가 가리키는 주소부터 시작해서 주소가 NULL인 주소가 나올 때까지 카운트를 해서 그 값을 리턴하는
게 strlen()함수야. 문자열을 초기화할 때에는 예를 들어 char * arr = "ABCDE"; 라고 하면 arr5에는 자동
으로 NULL이 들어가게 되 있거든. 그런데 위에서 초기화를 안 해줬으니 메모리 상에 있는 쓸데없는 데이터들
때문에 이상한 값이 출력되는 거지. cout << a; 라고 해보면 이상한 문자들이 출력되는게 보일꺼야. 7,8을 입력
했을때 23이 나오는 것은 포인터 a가 가리키고 있는 주소+23에 NULL문자가 들어 있다는 뜻이지.
- 아, 그리고 new연산자는 charb가 저장될 만큼의 메모리를 확보해서 그 주소를 포인터a에 넘겨주는 거지
배열은 만드는 명령문이 아니야.
2004/05/24 성훈's 공부내용 ¶
~cpp
#include <iostream>
using namespace std;
int main()
{
/* case 1.
int front[5] = {1,2,3,4,5};
cout << front[2] << endl; // 세번째 배열의 값을 출력
cout << front << endl; // 첫번째 배열의 주소값을 출력
cout << *front << endl; // 첫번째 배열의 값을 출력
cout << (front+4) << endl; // 다섯번째 배열의 주소값을 출력
cout << *(front+4) << endl; // 다섯번째 배열의 값을 출력 */
/* case 2.
int b;
cin >> b;
int array[b]; // array 배열이 할당해야할 값을 정확하게 알지 못하여 에러가 난다. */
/* case 3.
int b;
cin >> b;
int * a = new int[b]; // 이와 같은 경우에는 원하는 값을 할당받아 사용하므로 올바르게 실행된다. */
return 0;
}









