C语言
-
字符串表现形式、
-
定义初始化、相同的字符串所占内存地址不相同、
-
C语言特殊处理、字符串赋给指针是在内存中分配出一段类似字符数组的空间用来存放字符串常量、赋值给指针的是首地址、
-
char a[] = "zi fu chuan"; char b[100]; int c; for ( c = 0; *(a+c) !=' ' ; c++) // !=' ' 不等于字符串结束标记、 { *(b + c) = *(a + c);//一个字符一个字符的赋值、将a赋值给b 遇到 !=' '结束 } *(b + c) = ' ';//没有0 所以加上、 printf("a是%s ", a); printf("b是%s ", b);
-
字符指针方式、
void kaobei(char d[], char e[])//字符串数组名做参数、将实参首地址传递给a,b、 void kaobei(char *d, char *e)//使用指针传递、 { int c = 0; while (d[c] !=' ') { e[c] = d[c]; c++; } e[c] = ' '; } int main() { char a[] = "内容 是 123"; char b[] = "内容 一定 要比a常"; printf("a=%s ", a); printf("b=%s ", b); kaobei(a, b); printf("a=%s ", a); printf("b=%s ", b); }
-
-
字符串指针做函数参数、
-
//char a[100] = "内容 是 123";//定义初始化 char a[100] ; //a="内容 是 123";//错误的、因为 "内容 是 123"是有地址的、相当于将"内容 是 123"赋值给了a、 strcpy(a, "内容 是 123");//解决3行错误、strcpy是拷贝函数、2行加上4行相当于1行 char* a; a = "内容 是 123";//"内容 是 123" 是字符串常量、在内容中是有地址的、
-
指针变量的值是可以改变的、
-
char a[] = "内容 是 123"; char *b = a; b = b + 7;//跳过7个字节、 printf("跳过7个字节后是 %s ", b);
-
数组首地址是不可改变的、
-
-
字符串指针变量与字符数组、
- 字符数组由元素组成、(元素才是有效的内存)每个元素存放一个字符、而字符指针中存放的是字符串的首地址、字符串内容放在字符串的数组中、
2. 定义初始化、相当于将字符串内容拷贝到字符串数组中去、
3. 指针变量的值是可以改变的、数组首地址是不可改变的、
- 字符数组由元素组成、(元素才是有效的内存)每个元素存放一个字符、而字符指针中存放的是字符串的首地址、字符串内容放在字符串的数组中、
-
拷贝字符串是必须注意其长度、