博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于数组、结构体的初始化、赋值、拷贝
阅读量:5011 次
发布时间:2019-06-12

本文共 686 字,大约阅读时间需要 2 分钟。

数组有如下用法:

例如: int name[10]={0};
作为右值:name本身可以作为数组首元素的地址,等同于&name[0],取数组第一个元素的地址。可以明确的是,name即使有意义,也是作为指针存在,而不是代表整个数组
作为左值:name不能作为左值。有的资料说,不能作为左值,是因为name作为左值,是表示一个完整的内存,但这个完整内存不允许整体访问,只能访问内里的一个个小单元,所以,数组名不能作为左值;
        具体原因,说是与c语言的历史原因有关,暂不明确,全当记住就好了,容后有时间再作深究
        
        如此,数组的赋值,就只能是内存拷贝,或者单个数组元素赋值了
初始化:对数组整体赋值,只能作一次,即初始化。如同name[10]={0}这种用法
结构体的用法:
例如:
struct{
    int a;
    int b;
    char c;
}sTest;
struct sTest sss={0};
作为右值:允许;结构体名表示结构体变量本身,即结构体的内存空间指带。但作为右值,赋给左值时,是一种浅拷贝【关于浅拷贝与深拷贝,容后下一篇再作说明】,即成员变量值拷贝。例如,左值成员指针变量,指向右值成员指针变量所指向的地址,而不是重新分配内存空间
作为左值:允许;结构体名表示结构体变量本身,即结构体的内存空间指带。
初始化:对结构体整体赋值,只能作一次,即初始化。如同struct sTest sss={0};但右值如果是结构体变量,则是赋值,而不是初始化,是可以多次进行的。

转载于:https://www.cnblogs.com/tedani/p/10018054.html

你可能感兴趣的文章
EasyUI datagrid 的多条件查询
查看>>
Mac升级bash到最新版本
查看>>
利用vagrant打包系统--制作自己的box
查看>>
美女与硬币问题
查看>>
计算几何算法概览 (转)
查看>>
Notepad++的ftp远程编辑功能
查看>>
数据库多对多关联表(Python&MySQL)
查看>>
[实变函数]1.2 集合的运算
查看>>
第06天
查看>>
设计模式的征途—5.原型(Prototype)模式
查看>>
iOS10 app连接不上网络的问题
查看>>
结对开发之电梯调度最终稿(徐梦迪&刘博)
查看>>
simple java mail
查看>>
信息建模
查看>>
Mybatis 数据库物理分页插件 PageHelper
查看>>
虚函数、纯虚函数详解
查看>>
z-stack中数据的发送,广播、组播、点对点
查看>>
Practial Vim 学习笔记一
查看>>
.NET中使用js实现百度搜索下拉提示效果[不是局部刷新,呜呜。。]
查看>>
ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
查看>>