• C声明和初始化和赋值


    c语言的数据结构的声明 和 初始化

    简单一句话总结,在数据类型 声明的时候,如果同时给这个变量赋值,这个时候就叫初始化。
    如果声明的时候,没有给变量提供初始化。后面无论如何操作都不能叫做初始化了,只能给这个变量做赋值操作了。

    典型的就是字符串和数据,结构。

    如普通数据类型

    int a =3; // 声明变量a的同时,提供初始化操作。

    int b;
    b = 2; // 这个叫赋值操作,不叫初始化。

    如数组

    int a[] = {1, 2, 3, 4}; //声明数组a,并且提供初始化。

    int b[10];
    b[1] = 233; 这个叫做赋值。

    数组和字符串,这里有点东西

    char a[] = {‘a’, ‘b’, ‘c’, ‘d’}; //声明字符数组a,提供初始化,注意里面是单引号。好像c语言唯二个用单引号的地方;

    char b[] = “hello world”; //声明字符数组b, 提供初始化。注意这里貌似 “hello world” 是字符串常量,但是在这里初始化的表达式里面,就把这个“hello world” 打散,一个字符一个字符的装入字符数组b.

    char b[10]; // 如果不提供初始化,就要指定长度, 无论是显式的指定还是隐式的指定。
    b[2] = ‘x’; // 给b的第二位 赋值;另一个单引号在这里用。如果是双引号表示的是两个位,默认后面一个是、\0。。。单引号就单单表示一个位。

    这里数组只能一个位置一个位置的操作,如赋值,替换等等。不能把一个数组直接赋值给另外一个数组,无论这个数组是什么类型。

    有两种办法复制数组,一个是用for 循环对每一个位置进行赋值操作。第二个办法是:采用《string.h》里面的memcpy(a, b, sizeof(a));

    对于结构体 也是一样

    struct {
    int a;
    char b;
    } ss = {a=2, b=‘x’}; // 声明并且初始化;对于这种无结构标签的结构体,声明的变量就这一个,后面没有办法在利用这个结构体声明变量了。因为没有结构标签。

    struct p {
    int c;
    char *d;
    } ss = {c = 12, d=“helllo”}; //声明并且初始化,这种带有结构标签p的结构体,后续是可以继续单独定义变量的。如果新定义结构体,要带上struct…他俩是一起的,如:
    struct p s3; //注意这里是定义了一个类型是struct p的结构体,名字是s3,但是我们没有初始化,只是定义了变量
    struct p s4 = {c = 33, d=“world”}; // 声明s4变量,同时提供初始化。注意这里和最上面的变量ss …这两个某种程度上来说是一样的,都是定义新的变量同时初始化。

    同时:
    s3.c = 23;
    s3.d = “new value”;
    是可以这么给s3结构体里面的成员赋值的。

    对于结构是可以互相赋值的,这点比数组要好,数组无法一个数组赋值给另外一个数组,但是结构可以。

    所以上面的s3=s4 也是OK的。

    同时如果想要互相赋值两个数组,可以吧两个数组先放到结构里面,然后在把两个结构赋值,就可以变形实现两个数组赋值;

    如:
    struct Arr {
    int a[10];
    } a1, a2;
    泽可以 a1=a2;

  • 相关阅读:
    【React框架基础知识】虚拟DOM与JSX语法
    浅析STL三大组件,容器 算法 迭代器。
    (docker)手把手教学springboot maven项目根据jenkins自动打包,并自动构建镜像 并上传阿里云镜像仓库.
    研发效能之环境管理
    Python学习记录
    超纯水制备
    【通道注意力机制】SENet
    dart中final和const的区别
    从应用访问Pod元数据-DownwardApi的应用
    java计算机毕业设计飞羽羽毛球馆管理系统源码+mysql数据库+系统+lw文档+部署
  • 原文地址:https://blog.csdn.net/liyu180554320/article/details/125532248