C++에서 char * 배열을 사용하여 샘플 프로그램을 시도했지만 프로그램의 출력이 나에게 명확하지 않습니다.char 포인터 배열 출력 차이점입니다. C++
샘플 코드
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
using namespace std;
int main()
{
string val="val1";
char* hello[10]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
hello[1]=(char*)val.c_str();
val="val2";
printf("The val in hello[1] is :%s\n",hello[1]);
hello[3]=(char*)val.c_str();
printf("The val in hello[3] is :%s\n",hello[3]);
}
결과 : 내가 문자열
val.append("val2"); //val="val2";
를 추가했다
The val in hello[1] is :val2
The val in hello[3] is :val2
그러나 같은 프로그램
결과는
The val in hello[1] is :val1
The val in hello[3] is :val1val2
,536,
친절하게 설명하면 출력 결과가 어떻게 다른지 알 수 있습니까?
공지 사항을 도움이되기를 바랍니다 후 처음 NULL입니다. –
추가 한 문자열이 이미 할당 된 문자열 뒤에 "추가"된다는 것을 알고 있습니까? 코멘트에서 그것은 보이지 않는 것 같습니다 ... – JoelWilson
컴파일러가 캐스트가없는 할당을 허용하지 않는 이유가 있습니다. 그건 캐스트하지 말고,'const char *'를 저장하는 것을 의미합니다 (그리고 무효화되지 않도록주의하십시오). – chris