码迷,mamicode.com
首页 > 编程语言 > 详细

Linux C\C++基础 字符数组、字符串和字符串常量

时间:2019-11-20 19:49:40      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:nbsp   添加   linux   http   常用   长度   测试   大写   语言   

1.字符数组和字符串

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

2.初始化

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

打印长度

 技术图片

3.字符串常量

  • 每个字符串都是一个地址,这个地址是指字符串首元素地址
  • 字符串常量放在data区,文字常量区
  • 字符串常量,文字常量区的字符串,只能读,不能修改

 

  1 #include<stdio.h>                                                                                          
  2 void fun()
  3 {
  4       printf("fun s1=%p\n","hello world");
  5 }
  6 int main()
  7 
  8 {
  9       //所有的hello world都代表一个地址,所以下面打印应该一样
 10       printf("s1=%s\n","hello world");
 11       printf("s1=%p\n","hello world");
 12       printf("s1=%s\n","hello world"+1);
 13       fun();
 14       //字符常量就是此字符串的首元素地址,所以可以赋值个指针
 15       char *p="hello world";
 16       printf("p=%p\n",p);
 17       return 0;
 18 }

 技术图片

技术图片

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

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

技术图片

 

 

 

 

Linux C\C++基础 字符数组、字符串和字符串常量

标签:nbsp   添加   linux   http   常用   长度   测试   大写   语言   

原文地址:https://www.cnblogs.com/xiangdongBig1/p/11899576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!