黑马程序员技术交流社区
标题:
关于字符串
[打印本页]
作者:
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