[질문] 배열, 포인터, 문자열에 관한 간단한 질문...
글쓴이: caramis / 작성시간: 일, 2003/06/29 - 12:08오전
#include <iostream> #include <string> using namespace std; int main() { string str1; char str2[20]; char* str3 = new char [20]; char temp[20]; char* str4 = temp; char (*str5)[20]; cin >> str1; cin >> str2; cin >> str3; cin >> str4; cin >> str5; cout << str1 << endl << str2 << endl; cout << str3 << endl << str4 << endl << str5 << endl; return 0; }
str3 과 str4는 이상없는데 str5는 왜 에러가 나는지 궁금합니다.
또한 str4와 str5의 차이는 무엇인지 궁금합니다.
Forums:
에러를 보시면 아시겠지만..
에러를 보시면 아시겠지만..
>> 연산자 에 배열 포인터에 대한 정의가 없기때문입니다..
[code:1]#include <stdio.h>in
->
a : b : *c
1 : 1 : 1
2 : 2 : 2
Gands considered it the height of presumption to use personal pronouns to refer to themselves, because it arrogantly assumes the listeners know who the speaker is.
[quote][code:1]코드:#include <
str5는 일단 char *str5 를 20개담을 수 있는 배열을 만듭니다.
그런데 char가 아니라 char * 이라는것에 주목 해보시면 쉽게 아실 수 있을겁니다.
결국, 이것이 정확한 이유이죠.
scanf를 이용하신다면, 에러가 없을겁니다. 하지만 그렇게 하시지 않는것이좋겠죠?
str4는 str4[char0][char1][char2][char3]...[char19] 이고
str5는 str5[char *0][char *1]...[char *19] 입니다.
[] 안의 숫자는 "몇번째" 라는걸 표시하기위해 함 써봤습니다;;
음 그런데 주제넘은 말이지만, 초기부터 이런것에 너무 신경쓰시다보면 프로그래밍에 대한 진정한 흥미를 잃으실 수가 있습니다 ^^;;
프로그래머들이 저런것을 아는 이유는, 이런것을 따로 공부해서가 아니라, 프로그램을 짜면서 그냥 익숙해진 언어에 대한 컨셉이랄까? 그런것 때문입니다.
슈퍼마리오3를(......;;)하면서 숨겨진 레벨이 어디있는지 다 아는것과 비슷한 맥락이지요..-_-
이런건 프로그래밍 실력이 어느정도된 후에, 한번쯤 생각해보시는것이 좋을것같네요.
그러니까, 이런것을 따로 공부해야하는것이아니라, 서서히 익숙해지면서 머릿속에 쌓인 생각들을 정리하는 수준에서 하는것이지요.
많은 프로그래밍 서적이나, 교수들이 그런건 잘 모르는 듯 하네요..
그래서 새로 입문하시는 분들에게 나쁜영향을..-_-;
제가이런말을 하는 이유는 저도 저런거에 집착하다가 3년이라는 세월을 낭비해봤기때문에...;;;
L-System
[code:1]#include <stdio.h>in
->result:
a : b : *c
1 : 1 : 1
2 : 2 : 2
the comparison of sizes:
the size of a : 8
the size of b : 4
the size of *b: 4
the size of c: 4
the size of *c: 8
the comparison of sizes again:
the size of a: 4
the size of *a: 1
the size of b: 4
the size of *b: 100000
hmmm...
good!
Gands considered it the height of presumption to use personal pronouns to refer to themselves, because it arrogantly assumes the listeners know who the speaker is.
code는 수학식이 아닙니다.[code:1] .. ..
code는 수학식이 아닙니다.
str4는 포인터이고 str5는 배열포인터의 포인터 입니다.
str5는 당연히 초기화 되어야 겠죠.
따라서 다음과 같이 코드를 고치면 에러가 없습니다.
(고친 곳에 '//@' 을 달았습니다. )
2:^)
댓글 달기