字符串的3种表示 1. char str[] 2. char *str 3. 静态 "Hello,world!"
1.char str[]="Hello,world!" str[0]='a' //可以的 2.char *str ; str = "Hello,world!" // str[0] = 'a'; //不可以 3.char *str = new char [13]; str = "Hello,world!" str[0] = 'a'; //不可以 4.char *str = new char [13]; strcpy(str,"Hello,world!"); str[0] = 'a'; //可以 5.char *str = new char [13]; str = "Hello!"; strcpy(str,"Hello,world!"); str[0] = 'a'; //不可以 原因: str[] 是分配了一组空间,其分别存放每个字符 *str用=表示指向这个静态字符串,不能修改 *str分配了空间,用strcpy,为每个空间都指向字符,修改指向某个字符里面存储的可以
str[],*str str[i],某个元素的地址 &str[i],某个元素的地址 void * 对应 str,或者&str[i]
cout是可以输出没有分配空间的指针 strcpy,memcpy之类,必须先分配空间 memcpy(void *dest,void *src) dest必须先分配空间 src 可以先不分配空间
char *str1,*str2,*str3,*str4; str1 = new char [20]; str2 = new char [20]; str3 = "Hello,world!"; str4 = str3; memcpy(str1,str3,13); memcpy(str2,str4,13); //都是可以的
struct abc{int a;int b;}; abc *a1,*a2; a1 = (abc *)malloc(sizeof(abc));//必须要这句 a1->a = 1; a1->b = 1; a2 = (abc *)malloc(sizeof(abc)); memcpy(a2,a1,sizeof(abc));
char *str...memcpy(str,...) char str[]..memcpy(str,...) char str[]..memcpy(&str[0]..) 不需要转换成memcpy((void *)str,..) struct str ...memcpy(&str,..)

|