char *ch;
并不是定义一个字符串,它只是定义了一个字符指针。
在Win32中它是四个字节。C++中CString所谓的动态存储的实现,是由类的编写
者在类的内部实现的,实质上也是需要在类中调用
malloc() realloc()一类的函数来实现。
并不是定义一个字符串,它只是定义了一个字符指针。
在Win32中它是四个字节。C++中CString所谓的动态存储的实现,是由类的编写
者在类的内部实现的,实质上也是需要在类中调用
malloc() realloc()一类的函数来实现。
ch *c;
*c = 'a';
就知道怎么回事了.如果不为指针分配内存,那么这个指针或者需要指向已经定义的内存块,否则使用时就会出现非法操作.一般比较安全的作法是不用的指针设为0值(NULL),这样,即使没有给这个指针分配内存就使用这个指针,也只会出现非法操作,而不会出现不可预计的后果.CString的内部实际上也是一个字符指针,但是据我所知的做法是其还维护了这个指针指向的内存的长度,在长度不足时,指会释放这段内存,然后重新申请更大的内存.
CString cs1,cs2;
cs1 = cs1+cs2;
需要执行创建cs1副本,删除cs1,创建大的cs1...
char *c=NULL;
c=new char[100];
sprintf(c,"1223444");
printf("%s",c);
delete c[];
c=NULL;
当然,你也可以定义字符串数组,这样比较方便,不要自己删除指针,如果用指针,一定要记得删除,而用数组的话操作系统会保证清空的,当然,用数组时别忘了初始化。