char형 포인터 문자열에 관한 질문인데요..

찬밥의 이미지

c++ 기초 플러스를 보면서 문제를 풀고 있는데요..
문제를 풀다가.. 이해 안되는 부분이 있어서....

// CD.H
#ifndef _CD_H_
#define _CD_H_

class Cd{
private:
	char * performers[50];
	char * label[20];
	int selections;
	double playtime;
public:
	Cd(char * s1, char * s2, int n, double x);
	Cd(const Cd & d);
	Cd();
	~Cd();
	virtual void Report() const;
	Cd & operator=(const Cd & d);
};

#endif _CD_H_

이게 선언이고요..

나중에 만들때 보면....
Cd c1("Beatles", "Capitol", 14, 35.5);
이런데요.. 왜.. 멤버중에 문자열을.. 포인터에 배열로 했는지 궁금합니다..
그냥 char형의 배열로 하던가
char 포인터형 한 다음에 메모리 할당해 주면 될꺼 같은데..

굳지 책에서 포인터의 배열을... 쓴 이유를...
:oops: 여기서 보통 질문하시는 것과 레벨차이 때문에 부끄럽군요 :oops:
근데 C++ 기초플러스... 너무 두꺼워서 부담이 엄청가는데..
얇고 좋은책 없을까요..

moonzoo의 이미지

Cd(char * s1, char * s2, int n, double x);

위의 정의부분은 어떻게 되나여?

일단은..

포인터를 떠나서... 배열을 쓰는 이유는 해당 type이 여러개일 경우입니다.

여러개의 int 값을 다루기 위해 int 형의 배열을 사용하는 것과 마찬가지로

포인터가 여러개 필요하기 때문에 포인터 배열을 쓰는 것입니다.

예를들면 포인터 하나가 한개의 문자열을 가리키므로

여러개의 문자열을 가리키기 위해서는 포인터의 배열을 사용합니다.

위의 예에서 보자면

char * performers[50]; 와 같이 포인터 배열을 선언한 것은

다음과 같이 50개의 포인터가 필요한데 일일이 선언하기 힘드므로

배열을 선언한 것입니다.

char * performers1;
char * performers2;
char * performers3;
..
..
..
char * performers48;
char * performers49;
char * performers50;

=================

다 아실만한 내용이지만..혹시나 포인터 배열에 대해서는 헷갈려 하시는 것

같아서 주저리 주저리 써봤습니다.

hwandori의 이미지

Accelerate C++좋다고들하더군요..~ 저도 다보진 못했지만...두껍진 않습니다..ㅋ

TooCooL34의 이미지

제가 기억하기로는 그 책에 그렇게 안나와있고,
char performer[20]
이거나
char* performer
둘 중에 하나일겁니다.
책의 오탈자이거나, 잘못 보셨을겁니다. 생성자를 봐도 알 수 있죠.

첫번째 예는 간단한 예이고,
두번째 예는 동적 메모리 할당을 연습할 때 쓰려나..할겁니다. ^^

그리고 첨언하면,
그책이 얇고 가벼운 책입니다. -_-
가볍진 않지만, 그 정도면 꽤나 간결하게 잘 설명해준 책입니다. 천천히 보세요.

찬밥의 이미지

moonzoo// 아.. 연습문제 여서.. 그 class 정의만 주고.. 나머지는 제가 다 작성해야 합니다... 그리고 마지막에 알려주신 부분.. 햇갈렸던 부분이였습니다..
저게.. 포인터의 배열인지 배열의 포인터인지.... 똑같나 ㅡㅡ?? 아직도 햇갈리기는 한데.. 가르쳐 주셔서 감사합니다 ^__^;;

hwandori// 아.. 그렇군요..;; 조만간 서점가서 한 번 봐야겠내요.. 감사합니다..

TooCooL34// 전 개정 3판 보고 있거든요.. 산지가 오래되서.. -_-;;; 근데 책에 분명 char * performers[50]; char * label[20]; 이라고 써있습니다.. 혹시 오타일까요..;; 근데 이 책이 얇다니.. 충격적입니다 ㅠㅠ;;

TooCooL34의 이미지

찬밥 wrote:

TooCooL34// 전 개정 3판 보고 있거든요.. 산지가 오래되서.. -_-;;; 근데 책에 분명 char * performers[50]; char * label[20]; 이라고 써있습니다.. 혹시 오타일까요..;; 근데 이 책이 얇다니.. 충격적입니다 ㅠㅠ;;

개정 3판이었군요.
오타 99.99% 확실합니다. ^^ (좀 심하군요. -_-)
기왕이면 새책 사서 보세요.
찬밥의 이미지

TooCooL34 wrote:
찬밥 wrote:

TooCooL34// 전 개정 3판 보고 있거든요.. 산지가 오래되서.. -_-;;; 근데 책에 분명 char * performers[50]; char * label[20]; 이라고 써있습니다.. 혹시 오타일까요..;; 근데 이 책이 얇다니.. 충격적입니다 ㅠㅠ;;

개정 3판이었군요.
오타 99.99% 확실합니다. ^^ (좀 심하군요. -_-)
기왕이면 새책 사서 보세요.

아 그랬군요..
혼자서.. 물어볼까 말까 계속 고민했습니다.. 물어보기 영... 챙피해서 :oops:

감사합니다~
근데.. 돈이 없어서 ㅡㅡ;; 개정4판은 빌려봐야 겠군요...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.