黑马程序员技术交流社区

标题: 关于字符串 [打印本页]

作者: Mr.Yan    时间: 2015-11-22 23:38
标题: 关于字符串
int main(){
   
   
    //定义字符串   有几种方式
   
    //1.   字符数组定义字符串
   
    char str[10] = "apple";  //0x7fff58ee7bc6   --->  0x7f    栈区
   
   
    //2.   指针定义字符串
    char *str1 = "apple";  //0x106d18f92    ---->  0x10   常量区  :  内容不可改
   

    //区别:
    //1.   内存的存储区域不同
   
    //2.    指针变量能直接改变指向
    str1 = "baidu";   //  指针的"指向"发生了改变
   
//    str = "baidu";   //   数组名是常量    //错误的
   
    strcpy(str,"baidu");  //通过字符串函数   可以赋值
   
   
    //3.scanf方式初始化
   
//    scanf("%s",str);   //   字符数组创建的字符串   可以通过  scanf进行   初始化
//   
//   
//    scanf("%s",str1);  //    指针变量  创建的字符串   不能通过scanf  初始化
   
    //4. 能否修改字符串内部的内容
    str[4] = 'x';   //可以改变    栈区   通过数组   数组元素
   
//    str1   --->   "apple"  这个字符串的首地址   'a'-> 的地址
   
    *(str1+4) = 'x';
   
    printf("%s--%s\n",str,str1);     //运行会出错,用指针定义不能更改某个元素,只能更改指向,即指向别的地址
/*

总结:当用数组定义字符串的时候,因为存储在栈区,所以可以对其进行更改;
而当用指针对其进行定义的时候,因为分配的地址在常量区,不可更改.如欲更改,只能重新选择指向,即更改所指向的地址.

作者: 唐阿丽    时间: 2015-11-23 08:30
学习学习
作者: paul20150103    时间: 2015-11-23 09:03
学习中,谢谢
作者: 且笑着    时间: 2015-11-24 01:25
这是笔记吗
作者: wkop    时间: 2015-11-24 07:35
总结的不错
作者: 我有个少年梦    时间: 2015-11-24 08:12
加油不错哦加油不错哦!
作者: liruixue    时间: 2015-11-24 08:22
写的不错继续加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2