= 여사모 = * 여행을 사랑하는 모임 * 여름을 사랑하는 모임 * 여자를 좋아하는 사람들의 모임 == 주제 == * C++자료구조. == 참가원 == * 대장 : 구자겸 * 차장 : 진성훈, 이재환, 이승한 == 목표 == 배열, 구조체, 스택, 큐, 링크드 리스트, 이진트리(-_-;)등의 자료구조를 통한 C공부! == 공지 == * 다음 주제는 문자열(String), 스택(Stack)과 큐(Queue) 입니다. 단어 뜻 정도는 알아오는게 좋겠죠? * 다음 스터디 일정 - 6월 4일 금요일 7시 7피(회의끝나고) == 의견 == 다음 주제가 뭐에요?? 예습할 건덕지를 주세요~>__<; 예습할 건덕지를!! - :) [이승한] == 과제 == [여사모/과제/패턴인식] == 승한이 궁금증 == {{{~cpp #include using namespace std; #include 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"; 라고 하면 arr[5]에는 자동 으로 NULL이 들어가게 되 있거든. 그런데 위에서 초기화를 안 해줬으니 메모리 상에 있는 쓸데없는 데이터들 때문에 이상한 값이 출력되는 거지. cout << a; 라고 해보면 이상한 문자들이 출력되는게 보일꺼야. 7,8을 입력 했을때 23이 나오는 것은 포인터 a가 가리키고 있는 주소+23에 NULL문자가 들어 있다는 뜻이지. - 아, 그리고 new연산자는 char[b]가 저장될 만큼의 메모리를 확보해서 그 주소를 포인터a에 넘겨주는 거지 배열은 만드는 명령문이 아니야. DeleteMe 위의 답변을 쓰신분은, NoSmok:단락개념 NoSmok:단락나누기 NoSmok:단락개념토론 을 읽어 보세요. Edit모드에서 보기 편하게 엔터를 넣었지만, 생각의 단위로 단락이 있는것 같지는 안네요. --아무개 == 2004/05/24 성훈's 공부내용 == {{{~cpp #include 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; } }}} 31일 날 보아요~ ㅡㅡㅋ 므흣 - 앞에 *을 찍으면 값을 참조하고 그냥 쓰면 주소를 가리키지 --; ---- [스터디분류]