zoukankan      html  css  js  c++  java
  • Linux CC++基础 字符数组、字符串和字符串常量

    1.字符数组和字符串

    • C语言没有字符串类型,用字符数组模拟
    • 字符串一定是字符数组,字符数组不一定是字符串
    • 如果字符数组以字符''(''等同与数字0)结尾,那么这个字符数组就是字符串
    char a[]={'a','b','c'};//字符数组,不要指定大小,否则会添加0,变成字符串
    char b[10]={'a','b','c'.''};//字符串
    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
    ",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
    ","hello world");
      5 }
      6 int main()
      7 
      8 {
      9       //所有的hello world都代表一个地址,所以下面打印应该一样
     10       printf("s1=%s
    ","hello world");
     11       printf("s1=%p
    ","hello world");
     12       printf("s1=%s
    ","hello world"+1);
     13       fun();
     14       //字符常量就是此字符串的首元素地址,所以可以赋值个指针
     15       char *p="hello world";
     16       printf("p=%p
    ",p);
     17       return 0;
     18 }

     

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

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

     

    知识的二道贩子,此博客仅仅是个人学习总结!
  • 相关阅读:
    百度地图API示例之小实践 添加代理商标注
    MySQL分组操作
    MySQL连表操作
    MySQL多对多操作
    MySQL一对一操作
    MySQL唯一索引
    MySQL用户授权管理
    MySQL外键操作
    MySQL删操作
    MySQL增操作
  • 原文地址:https://www.cnblogs.com/xiangdongBig1/p/11899576.html
Copyright © 2011-2022 走看看