数组是“二等公民”的话题
数组是“二等公民”
- 数组不能直接赋值
- 作为参数传递会退化为指针
- 不能作为函数返回值
数组不能直接赋值
我们都知道,简单的变量类型,不如int 和 char ,是可以直接赋值的:
int a = 1;
int b = 2;
b =a;//赋值操作
但是如果是数组,int a[3] = {1,2,3}; int b[3] = {0};
是无法操作a = b
的。另外值得说明的是,放在结构体里面的数组是可以随着结构体赋值来进行赋值的:
#include <stdio.h>struct Foo {int n;double d[2];char *p_c;
}foo1, foo2;int main()
{char *c = (char *) malloc (4*sizeof(char));c[0] = 'a'; c[1] = 'b'; c[2] = 'c'; c[3] = '\0';foo1.n = 1;foo1.d[0] = 2; foo1.d[1] = 3;foo1.p_c = c;foo2 = foo1; //assign foo1 to foo2printf("%d %lf %lf %s\n", foo2.n, foo2.d[0], foo2.d[1], foo2.p_c);return 0;
}
运行结果如下:
1 2.000000 3.000000 abc
以上的代码段中,有结构体的赋值操作 foo2 = foo1;
,确实里面的数组也进行了赋值。
作为参数传递会退化为指针
这个很容易理解,当我们想把数组作为函数参数传递过去的时候,int a[2] = {1,2}; func(a);
在func
的实现里面,形参还必须用指针来接收。我们知道,数组的两要素是,类型和个数,退化为指针也就是丢了个要素-个数。
不能作为函数返回值
函数是不能返回数组类型的,但是结构体却可以。
数组是“二等公民”的话题相关推荐
- 一等公民 二等公民_使您的产品成为一流的公民
一等公民 二等公民 There was a great deal of interesting discussion last week based around a few blog posts. ...
- 从“二等公民”到正职,我真正理解了外包的价值
外包,一个互联网迅速发展下产生的衍生行业.在专业细分加剧的当今,越来越多大厂出于培养正式员工成本过高,但非项目期不需要过多人手等等原因,需要招募外包人员. 因为门槛极低,没有学历要求,又有机会前往各个 ...
- 别把自己变成了“二等公民”
上周参加一个代码审查会,在会上发现了设计上的一个很严重的错误.于是,我提了好几个问题,想知道为什么会出现这一错误.但是,我的同事告诉我这都是印度团队做的设计.需要提供的一个背景信息是,这个项目是我所在 ...
- C语言中的二等公民在C++是如何翻身的?
在原来的C语言中,enum.const.auto等关键字都不尽完善,并没有发挥应有的功能,是二等公民,而随着时间的推移,在C++中他们都被完善了,有些还被赋予了新的功能,担当起了重要的角色.相反,原本 ...
- 一等公民 二等公民_关于公民众筹的四件事你不知道
一等公民 二等公民 众筹无处不在. 人们正在使用它来资助手表,漫画书,甚至著名的电影导演也在这样做. 在当今全球价值60亿美元的行业中,我认为最有趣,最具颠覆性和令人兴奋的工作是基于捐赠的众筹. 每年 ...
- 一等公民 二等公民_公民莫
一等公民 二等公民 A big (and long and exhausting) day for the Hanselman family. My wife has just today becom ...
- 一等公民 二等公民_成为.NET优秀公民意味着某些事情...从您的调试技能开始
一等公民 二等公民 I've not been one to work the newsgroups, answering questions. I probably should. I'm more ...
- 一等公民 二等公民_公民如何通过开放式硬件成为科学家
一等公民 二等公民 "每个人的个人信息汇总在一起,就会给您带来真正的知识云." Gowanus运河自然保护协会的研究协调员Eymund Diegel在新的开源故事纪录片" ...
- PG守护进程(Postmaster)——后台二等公民进程第一波启动maybe_start_bgworkers
PostgreSQL数据库的后台二等公民进程包括普通后端进程.walsender进程.Autovacuum进程和后台进程.Postmaster守护进程为每个上述进程分配一个Backend结构体,并被组 ...
最新文章
- 缓冲区溢出基本C程序的控制台和Win32版本
- 一定要树立真的猛的期刊,只需要发一篇的思路
- [20170617]vim中调用sqlplus.txt
- ubuntu远程连接windows工具rdesktop
- 9.带有返回值的函数
- mysql邮箱认证_邮件服务系列postfix+sasl+mysql实现用户认证功能
- 2017年预测:突破性创意工作站、物联网
- 利用jmeter对mysql数据库进行压力测试
- Linux shell 中的那些你值得一试的小把戏
- Spring pom配置详解(转)
- linux cp覆盖每次都有提示
- Ubuntu10.04下搞定D-Link DWA-125无线网卡驱动
- 3dmax su 简单_Sketchup导入3DSMAX的方法 3DMAX导入SU技巧
- 学学习笔记:利用TCGA Assembler工具下载及处理数据
- Ubuntu 论坛遭到入侵,用户数据泄露
- axure sketch 对比_Sketch to Axure RP插件下载
- 使用深山红叶工具盘备份瘫痪服务器的数据
- 华为云数据库VS自建数据库,上“云”不是智商税
- 算力网络发展中的若干关键技术问题分析
- JIRA 从低版本升级到高版本(3 6 2- 6 0 8)
热门文章
- 加药装置 全自动加药装置 示踪加药装置介绍
- 有关声音信号的那么点知识
- 计算机类图书12月份销售,12月份计算机专业实习报告范文
- 动态多目标进化优化研究进展
- 这是什么一个可以升级的系统 可为什么没有说明书 自己摸索 你玩儿我吧 一个得到了一套可以升级的军事系统的年轻人,以后路就应该坑到底
- 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)
- 从零开始学版图(一)——反相器版图
- 二叉搜索树的JAVA实现-201805
- 中间人攻击工具(Xerosploit)
- 应届大硕,上海找工作