E D R , A S I H C RSS

여사모

여사모

  • 여행을 사랑하는 모임
  • 여름을 사랑하는 모임
  • 여자를 좋아하는 사람들의 모임

주제

  • 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에 넘겨주는 거지
배열은 만드는 명령문이 아니야.
DeleteMe 위의 답변을 쓰신분은, NoSmok:단락개념 NoSmok:단락나누기 NoSmok:단락개념토론을 읽어 보세요. Edit모드에서 보기 편하게 엔터를 넣었지만, 생각의 단위로 단락이 있는것 같지는 안네요. --아무개

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;
}
31일 날 보아요~ ㅡㅡㅋ 므흣
- 앞에 *을 찍으면 값을 참조하고 그냥 쓰면 주소를 가리키지 --;

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.4800 sec