저는 C++의 초보자로서 언어 학습과 놀기입니다. 내가 이해하지 못하는 행동을하는 코드를 썼다. 누가 아래의 코드가 임의의 정크를 인쇄하고 목록의 첫 번째 문자 (즉, a
)를 인쇄하지 않는지 설명 할 수 있습니까? 내가 출력 a
에 기대있을 때 왜 함수가 char을 반환해야 할 때 쓰레기를 반환합니까?
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>
#include <climits>
#include <stdio.h>
char* str2char(std::string str)
{
char cset[str.size()+1]; // +1 for the null character
for(int i = 0; i < str.size(); i++)
{
cset[i] = str[i];
}
cset[str.size()] = '\0';
return cset;
}
int main (int argc, char * const argv[]) {
std::vector<std::string> ladontakadet;
ladontakadet.push_back("aabcbbca");
ladontakadet.push_back("abcdabcd");
ladontakadet.push_back("cbbdcdaa");
ladontakadet.push_back("aadcbdca");
ladontakadet.push_back("cccbaaab");
ladontakadet.push_back("dabccbaa");
ladontakadet.push_back("ccbdcbad");
ladontakadet.push_back("bdcbccad");
ladontakadet.push_back("ddcadccb");
ladontakadet.push_back("baccddaa");
std::string v = ladontakadet.at(0);
char *r;
r = str2char(v);
std::cout << r[0] << std::endl;
return 0;
}
는 왜이 쓰레기를 반환?
도움이 필요하시면 Thnx!
P. 이 코드의 출력은 임의적입니다. 항상 동일한 문자를 인쇄하지는 않습니다. : S
을, 그것을 만드는입니다 코드 복사가 불가능합니다. –
간단한 형식 코드는 이미지가 과도 함을 나타냅니다. – legends2k
+1 그래, 미안 해요 – jjepsuomi