• c语言基础----字符串数组


    字符串

    在 C 语言中,字符串实际上是使用 null 字符 '' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

    字符定义输出

    void main()
    {
         char a='a';
         printf("%c",a); 
    }

    字符串定义输出

    下面的使用字符串数组声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。

    char greeting[6] = {'H', 'e', 'l', 'l', 'o', ''};

    依据数组初始化规则,您可以把上面的语句写成以下语句:

    void main()
    {
        char str[]="hello";
        printf("%s",str); 
    }

    操作字符串的函数:

    1、 strcpy(s1, s2);
    复制字符串 s2 到字符串 s1。
    2、 strcat(s1, s2);
    连接字符串 s2 到字符串 s1 的末尾。
    3、 strlen(s1);
    返回字符串 s1 的长度。
    4、 strcmp(s1, s2);
    如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
    5、 strchr(s1, ch);
    返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
    6、 strstr(s1, s2);
    返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

    结构体中字符串赋值

    字符串数组赋值

    struct student 
    { 
      int num; 
      char name[10]; 
    }; 
     
    int main() 
    { 
      student st; 
      st.num = 10; 
      //st.name = "linjunjie"; //字符串不能用=赋值
      strcpy(st.name, "linjunjie");
      return 0; 
    }

    字符串指针赋值

    int main(){
        struct{
            char *name;  //姓名
        } stu1;
    
        //给结构体赋值
        stu1.name = "Tom";
    }

    char *p = “hello”;

    上边的表达式为什么可以,而把p换成数组,然后再赋值就不行了

    解释:

    字符串常量"hello"出现在一个表达式中时,"hello"表达式使用的值就是这些字符所存储的地址(在常量区),而不是这些字符本身。

    所以,可以把字符串赋值给指向字符的指针p,而不能把字符串赋值给一个字符数组。 

    char a[10] = “hello”; //这样可以,这种情况是c语言初始化所支持的

    如果写成char a[10];然后 a = “hello” 这样就错误了。 

    同样是a数组,char a[10] = “hello”;这种是数组的初始化,和a[0] = ‘h’ a[1] = ‘e’…是一个道理

    但是换成char a [10];然后a = “hello”就不行了, “hello”赋值的值是一个地址,而a虽然也有地址,但是这与指针是不一样的,指针的值是地址,而数组的值虽然也是地址,但是却是一个常量,所以不能给常量赋值。

    相关文章:C语言中,为什么字符串可以赋值给字符指针变量

    数组

    数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。

    声明数组

    type arrayName [ arraySize ];

    叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型。

    初始化数组

    在 C 中,您可以逐个初始化数组,也可以使用一个初始化语句,如下所示:

    double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

    大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。

    如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果:

    double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
  • 相关阅读:
    ylbtech-dbs-m-QQ邮箱
    ylbtech-Bill(发票管理)-数据库设计
    ylbtech-Recode(记录)-数据库设计
    ylbtech-LanguageSamples-Yield
    ylbtech-LanguageSamples-XMLdoc
    ylbtech-LanguageSamples-Versioning(版本控制)
    线程局部变量的使用
    守护线程的创建和运行
    有助于改善性能的技巧
    使用NIO提升性能
  • 原文地址:https://www.cnblogs.com/xuey/p/12205337.html
Copyright © 2020-2023  润新知