1.字符数组和字符串

  • C语言没有字符串类型,用字符数组模拟
  • 字符串一定是字符数组,字符数组不一定是字符串
  • 如果字符数组以字符'\0'('\0'等同与数字0)结尾,那么这个字符数组就是字符串
char a[]={'a','b','c'};//字符数组,不要指定大小,否则会添加0,变成字符串
char b[]={'a','b','c'.'\0'};//字符串
char c[]={'a','b','c',};//字符串

2.初始化

   include<stdio.h>

   int main()

   {

         char a[]={'a','b','c'};
printf("a=%s\n",a);//打印,乱码,没有结束符
return ;
}
  • 常用的初始化,使用字符串初始化,在字符串末尾自动加结束符数字0
  • 这个结束符,用户看不到(隐藏)
  • char a[10],最大写9个字符,留一个位置放结束符
  • sizeof()测试数据类型的大小,不会因为结束符提前结束
char a[]="abc";

打印长度

3.字符串常量

  • 每个字符串都是一个地址,这个地址是指字符串首元素地址
  • 字符串常量放在data区,文字常量区
  • 字符串常量,文字常量区的字符串,只能读,不能修改
   #include<stdio.h>
void fun()
{
printf("fun s1=%p\n","hello world");
}
int main() {
//所有的hello world都代表一个地址,所以下面打印应该一样
printf("s1=%s\n","hello world");
printf("s1=%p\n","hello world");
printf("s1=%s\n","hello world"+);
fun();
//字符常量就是此字符串的首元素地址,所以可以赋值个指针
char *p="hello world";
printf("p=%p\n",p);
return ;
}

4.字符串常量初始化字符指针和字符数组的区别

char *p="hello";
char buf[]="hello";
  • p指针保存le"hello"的地址
  • 指针所指向的内存不能修改
  • 把“hello"一个一个字符放在buf数组中
  • 数组的元素可以修改

最新文章

  1. Best way to add Gradle support to IntelliJ Project
  2. Linux英文全称
  3. Unity依赖注入使用
  4. 如何让你的scrapy爬虫不再被ban之二(利用第三方平台crawlera做scrapy爬虫防屏蔽)
  5. 20145225 实验四《Andoid开发基础》
  6. 不借助jquery封装好的ajax,你能用js手写ajax框架吗
  7. HIbernate学习笔记(八) hibernate缓存机制
  8. Nine simple steps to enable X.509 certificates on WCF- 摘自网络
  9. android消息推送(Jpush)
  10. XML语法小结
  11. Linux 共享内存 详解
  12. nl命令
  13. RabbitMq相关
  14. extjs.net 按钮执行并显示Mask代码
  15. 暴雪《争霸艾泽拉斯》*采用自适应 SSAO
  16. openstack-- neutron 二/三层网络实现探究
  17. 实验5 IIC通讯与AD/接DA接口
  18. 织梦dedecms模板制作时,循环递增autoindex使用方法整理
  19. 命令方式启动安卓模拟器(M9)
  20. 关于Linq的对List&lt;实体&gt;去掉重复ID的一个小例子!

热门文章

  1. java 内部类(简单使用)
  2. Jmeter工具使用-分布式架构和服务器性能监控解决方案
  3. FZU 2231 平行四边形数
  4. gitk、Git GUI 图形化工具中文显示乱码的解决方案
  5. websocket聊天体验(二)
  6. TCP层recvmsg系统调用的实现分析
  7. Spring Boot学习笔记(1)
  8. Ubuntu——关于以root权限操作和启用root账户的讨论
  9. java实现一个简单的验证码生成器
  10. ccf 201612-3 权限查询