数组是“二等公民”

  • 数组不能直接赋值
  • 作为参数传递会退化为指针
  • 不能作为函数返回值

数组不能直接赋值

我们都知道,简单的变量类型,不如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的实现里面,形参还必须用指针来接收。我们知道,数组的两要素是,类型和个数,退化为指针也就是丢了个要素-个数。

不能作为函数返回值

函数是不能返回数组类型的,但是结构体却可以。

数组是“二等公民”的话题相关推荐

  1. 一等公民 二等公民_使您的产品成为一流的公民

    一等公民 二等公民 There was a great deal of interesting discussion last week based around a few blog posts. ...

  2. 从“二等公民”到正职,我真正理解了外包的价值

    外包,一个互联网迅速发展下产生的衍生行业.在专业细分加剧的当今,越来越多大厂出于培养正式员工成本过高,但非项目期不需要过多人手等等原因,需要招募外包人员. 因为门槛极低,没有学历要求,又有机会前往各个 ...

  3. 别把自己变成了“二等公民”

    上周参加一个代码审查会,在会上发现了设计上的一个很严重的错误.于是,我提了好几个问题,想知道为什么会出现这一错误.但是,我的同事告诉我这都是印度团队做的设计.需要提供的一个背景信息是,这个项目是我所在 ...

  4. C语言中的二等公民在C++是如何翻身的?

    在原来的C语言中,enum.const.auto等关键字都不尽完善,并没有发挥应有的功能,是二等公民,而随着时间的推移,在C++中他们都被完善了,有些还被赋予了新的功能,担当起了重要的角色.相反,原本 ...

  5. 一等公民 二等公民_关于公民众筹的四件事你不知道

    一等公民 二等公民 众筹无处不在. 人们正在使用它来资助手表,漫画书,甚至著名的电影导演也在这样做. 在当今全球价值60亿美元的行业中,我认为最有趣,最具颠覆性和令人兴奋的工作是基于捐赠的众筹. 每年 ...

  6. 一等公民 二等公民_公民莫

    一等公民 二等公民 A big (and long and exhausting) day for the Hanselman family. My wife has just today becom ...

  7. 一等公民 二等公民_成为.NET优秀公民意味着某些事情...从您的调试技能开始

    一等公民 二等公民 I've not been one to work the newsgroups, answering questions. I probably should. I'm more ...

  8. 一等公民 二等公民_公民如何通过开放式硬件成为科学家

    一等公民 二等公民 "每个人的个人信息汇总在一起,就会给您带来真正的知识云." Gowanus运河自然保护协会的研究协调员Eymund Diegel在新的开源故事纪录片" ...

  9. PG守护进程(Postmaster)——后台二等公民进程第一波启动maybe_start_bgworkers

    PostgreSQL数据库的后台二等公民进程包括普通后端进程.walsender进程.Autovacuum进程和后台进程.Postmaster守护进程为每个上述进程分配一个Backend结构体,并被组 ...

最新文章

  1. 缓冲区溢出基本C程序的控制台和Win32版本
  2. 一定要树立真的猛的期刊,只需要发一篇的思路
  3. [20170617]vim中调用sqlplus.txt
  4. ubuntu远程连接windows工具rdesktop
  5. 9.带有返回值的函数
  6. mysql邮箱认证_邮件服务系列postfix+sasl+mysql实现用户认证功能
  7. 2017年预测:突破性创意工作站、物联网
  8. 利用jmeter对mysql数据库进行压力测试
  9. Linux shell 中的那些你值得一试的小把戏
  10. Spring pom配置详解(转)
  11. linux cp覆盖每次都有提示
  12. Ubuntu10.04下搞定D-Link DWA-125无线网卡驱动
  13. 3dmax su 简单_Sketchup导入3DSMAX的方法 3DMAX导入SU技巧
  14. 学学习笔记:利用TCGA Assembler工具下载及处理数据
  15. Ubuntu 论坛遭到入侵,用户数据泄露
  16. axure sketch 对比_Sketch to Axure RP插件下载
  17. 使用深山红叶工具盘备份瘫痪服务器的数据
  18. 华为云数据库VS自建数据库,上“云”不是智商税
  19. 算力网络发展中的若干关键技术问题分析
  20. JIRA 从低版本升级到高版本(3 6 2- 6 0 8)

热门文章

  1. 加药装置 全自动加药装置 示踪加药装置介绍
  2. 有关声音信号的那么点知识
  3. 计算机类图书12月份销售,12月份计算机专业实习报告范文
  4. 动态多目标进化优化研究进展
  5. 这是什么一个可以升级的系统 可为什么没有说明书 自己摸索 你玩儿我吧 一个得到了一套可以升级的军事系统的年轻人,以后路就应该坑到底
  6. 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)
  7. 从零开始学版图(一)——反相器版图
  8. 二叉搜索树的JAVA实现-201805
  9. 中间人攻击工具(Xerosploit)
  10. 应届大硕,上海找工作