c语言初级——字符串
一、字符串打印1
#include <stdio.h>
#include <string.h>int main(){char str[] = "hello world";int len = strlen(str), i;//直接输出字符串printf("%s\\n", str);//每次输出一个字符for(i=0; i<len; i++){printf("%c", str[i]);}printf("\\n");return 0;
}
二、字符数组归根结底还是数组
#include <stdio.h>
#include <string.h>int main(){char str[] = "hello world";char *pstr = str;int len = strlen(str), i;//使用*(pstr+i)for(i=0; i<len; i++){printf("%c", *(pstr+i));}printf("\\n");//使用pstr[i]for(i=0; i<len; i++){printf("%c", pstr[i]);}printf("\\n");//使用*(str+i)for(i=0; i<len; i++){printf("%c", *(str+i));}printf("\\n");return 0;
}
三、还有一种用指针直接指向这个字符串
#include <stdio.h>
#include <string.h>int main(){char *str = "hello world";int len = strlen(str), i;//直接输出字符串printf("%s\\n", str);//使用*(str+i)for(i=0; i<len; i++){printf("%c", *(str+i));}printf("\\n");//使用str[i]for(i=0; i<len; i++){printf("%c", str[i]);}printf("\\n");return 0;
}
它们最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限