沙市网站建设,网站建设的营业执照,gta5线下买房网站建设,上海 网站建字符串
字符串基本知识
字符串是以空字符#xff08;\0#xff09;结尾的char类型数组。如下程序#xff0c;给出了字符串的声明定义方式。
void test(void) {char words[MAXLENGTH] I am a string in an array.;const char* pt1 something is point…字符串
字符串基本知识
字符串是以空字符\0结尾的char类型数组。如下程序给出了字符串的声明定义方式。
void test(void) {char words[MAXLENGTH] I am a string in an array.;const char* pt1 something is pointing me.;puts(Here are some strings.);puts(MSG);puts(words);puts(pt1);words[8] p;puts(words);
}
字符串定义都是使用双引号来进行定义的单引号定义的是字符双引号中的字符和编译器自动加入末尾的\0字符。 字符串常量属于静态存储类别这说明如果在函数中使用字符串常量该字符串只会存储一次。
字符串数组形式和指针形式
字符串存储在静态存储区程序载入内存时也载入了程序中的字符串但是程序在开始运行时才会为其分配内存。此时才会将字符串拷贝到数组中。此时字符串有两个副本一个时静态内存区中的字符串字面量另一个是存储在数组中的字符串。而指针形式则会将字符串在静态区的地址拷贝给指针。 在静态存储区的字符串字面量被视为const数据。
void test1(void) {char ar[] MSG;const char* pr MSG;printf(address of \I am a symbolic string constant.\: %p \n, I am a symbolic string constant.);printf(address of ar: %p \n, ar);printf(address of pr: %p \n, pr);printf(address of MSG: %p \n, MSG);
}输出
address of I am a symbolic string constant.: 00007FF77A209C88
address of ar: 000000FD6DD0F9E8
address of pr: 00007FF77A209C88
address of MSG: 00007FF77A209C88可以使用指针形式来指向字符串进行使用但是不要对指针形式字符串进行更改这可能会引起错误具体取决于编译器。
void test2(void) {const char* pr MSG;while (pr) {printf(%c, *pr);pr;}printf(\nDone!);
}可以使用字符串指针形式在指针方式下指针可以进行移动但是需要把循环条件写好该方式下的循环条件并是一个合适方式原因在于指针会一直移动下去应该也是取决于编译器。
void test2(void) {const char* pr MSG;while (*pr ! \0) {printf(%c, *pr);pr;}printf(\nDone!);
}该形式更好。