char* s1 = new char[30];
char s2[] = "is not";
const char* s3 = "likes";
s3 = "allows";
strcpy( s2, s3 );
sprintf( s1, "%s %s %s using functions.", "C++", s2, "fast code" );
printf( "String was : %s\n", s1 );
delete[] s1;
我对
感到困惑const char* s3 = "likes";
s3 = "allows";
因为我认为s3是一个const,所以它不能改变。但是,当s3 = "allows"
有效时。为什么呢?
答案 0 :(得分:5)
我认为s3是一个const
不,s3
不是const本身,它是指向const的指针,因此s3 = "allows";
很好,*s3 = 'n';
会失败。
如果你的意思是const指针,char* const s3
和const char* const s3
都是const指针,那么s3 = "allows";
就会失败。
摘要(请注意const
)的位置
char* s3
是指向非const的非const指针,s3 = "allows";
和*s3 = 'n';
都可以。
const char* s3
是指向const的非const指针,s3 = "allows";
很好,*s3 = 'n';
失败
char* const s3
是指向非const的const指针,s3 = "allows";
失败,*s3 = 'n';
没问题
const char* const s3
是指向const的const指针,s3 = "allows";
和*s3 = 'n';
都将失败。