2010-03-04 7 views
1

난 그냥 다양한 포인터 개념의 주위에 내 머리를 얻으려고 노력 그리고 난 다음 코드가 있습니다포인터 메모리 할당 포인터, 왜 잘못 되었습니까?

char** a = new char*; // assign first pointer to point to a char pointer 

    char b[10] = "bla bla"; 
    *a = new char; //assign second pointer a block of memory. -> This looks wrong to me!! 
    (**a) = b[2]; 

그래서 두 번째 '포인터'메모리 할당 문제 무엇입니까? 그것은 실행하고 물건,하지만 그것은 단지 잘못 느낀다.

편집 :

감사합니다. 나는 뭔가를 배웠다!

+4

어 .... 아무 문제가 없습니다. – Yacoby

+0

왜 뭔가 잘못되었다고 생각합니까? '* a'를 C 문자열로 취급하려고하면 * 할 수 없지만 그렇지 않으면 코드는 괜찮습니다. –

+0

기술적으로 정확합니다. 그러나 정확히 무엇을 성취하려고합니다. –

답변

1

*a = new char;은 기본 생성자를 사용하여 단일 char 변수를 만드는 것을 의미합니다. 이 *a = new char();에 해당입니다 그리고 당신은 포인터가 "잘못"의 IT가 불분명하다는있는

2

동적 메모리 할당을 사용하는 것이 C++의 오히려 나쁜 스타일 인 것을 제외하면 아무 문제가 없습니다.

+0

그럼 어떻게하면 좋은 C++ 스타일로 할 수 있을까요? –

+1

char a = 'a'; ... 또는 어떤 확실하지 않은 이유로 이중 포인터가 필요한 경우 char a = 'a'; char * ap = & a; char ** app = ≈ – Tronic

2
char** a = new char*; // a is a pointer to a pointer to a type char. allocate a new pointer variable and make a point to it. 
char b[10] = "bla bla"; // define a char array. 
*a = new char; // allocate a new char and make the pointer whose address is in a point to it. 
(**a) = b[2]; // copy the 3rd char of b to the char whose address is pointed by a. 
1

유일한 이유를 방금 만든 변수의 주소를 할당합니다. 분명히 불분명하다는 데 분명히 동의합니다.

더 나은 이름과 더 나은 클래스 구조를 사용하면 수단에 대한 의구심을 없애고 더 나은 클래스 구조를 사용하면 유사한 코드가 "올바른"것일 수 있습니다.

0

기술적으로 잘못된 것은 없습니다.

그러나 동일한 코드 페이지에서 단일 요소에 대한 포인터에 대한 포인터를 명시 적으로 할당하는 것은 드뭅니다. 실제로 FooBar에 대해 알아야 할 필요가 있다면 Tom에게 물어보십시오. Tom이 나입니다. "

0

기술적으로 잘못한 것이 없습니다. 그러나 스타일이 거의 사용되지 않는 것 같습니다.