一、默认给数组赋值有两种情况:

  1. 声明的同时初始化
    int a[5]={1,2,3,4,5};
  2. 声明后再初始化
    int a[5];
    a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;

注意!在c、c++中不允许将数组声明和整体初始化分开!
如:
int a[5];
a[5]={1,2,3,4,5}
这样做会导致语法错误!
错误分析:由于数组下标从零开始,a[5]根本就不存在!
就算存在,此时的a[5] 也只代表它自己!根本不能代表数组整体!

因为C/C++中,数组名就是数组第一个元素的地址,也就是一个常量指针,比如,int a[100] , b[100] 则a和b都是常量指针int*const a(其值肯定是不同的),如果你执行a = b,那就是企图修改常量指针a的值,而在C/C++里,任何常量都是不允许被修改的。a[1]或*a才是a中第一个元素的内容。

很多数组在创建时都是第二种情况,但是一个个赋值有很麻烦有什么好的办法吗?

二、用结构体指针给数组赋值

#include <stdio.h>typedef struct
{int iOne;int iTwo;int iThr;
}TRANS_HEAD_S;typedef struct
{int iUser;
}USER_HEAD_S;int main()
{char acBuf[sizeof(TRANS_HEAD_S) + sizeof(USER_HEAD_S) + 4] = {0};TRANS_HEAD_S *pstTransHead = NULL;USER_HEAD_S *pstUserHead = NULL;int i=0;  int *pValue = NULL;/*pstTransHead指针指向了acBuf的头*/pstTransHead = (TRANS_HEAD_S *)acBuf;pstTransHead->iOne = 11;pstTransHead->iTwo = 12;pstTransHead->iThr = 13;/*pstUserHead指向了acBuf的第13个字节的头,因为结构体TRANS_HEAD_S是12字节*/pstUserHead = (USER_HEAD_S *)&pstTransHead[1];pstUserHead->iUser = 14;/*pValue指向了acBuf的第17个字节的头,因为结构体TRANS_HEAD_S是12字节,USER_HEAD_S是4个字节*/pValue = (int *)&pstUserHead[1];(*pValue) = 15;for(i = 0; i < sizeof(acBuf); i++){printf("acBuf[%d] = %d\n", i, acBuf[i]);}return 0;
}

结果:

acBuf[0] = 11
acBuf[1] = 0
acBuf[2] = 0
acBuf[3] = 0
acBuf[4] = 12
acBuf[5] = 0
acBuf[6] = 0
acBuf[7] = 0
acBuf[8] = 13
acBuf[9] = 0
acBuf[10] = 0
acBuf[11] = 0
acBuf[12] = 14
acBuf[13] = 0
acBuf[14] = 0
acBuf[15] = 0
acBuf[16] = 15
acBuf[17] = 0
acBuf[18] = 0
acBuf[19] = 0

C/C++如何给高效给数组赋值相关推荐

  1. access vba 常量数组赋值_聊聊 VBA 数组的那些坑

    为什么使用数组? 1. 缩减工作薄文件大小,提高运行效率 一般而言只是使用 Excel 的内置工作表函数,在运算方面还是很高效的,但有时因为一个单元格牵扯的计算太多,比如调用多单元格数据,对结果文本进 ...

  2. Javascript字符串及数组赋值区别

    最近做一个分页的javascript程序,需要先将tbody下面的tr标签全部删除,然后再append新的tr,使用下面的代码 var trs=$d("tbdoys").getEl ...

  3. 给字符数组赋值的方法

    main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条 ...

  4. c语言把一个数组赋值给另一个数组_如何把一个固定数组的值传递给另外一个数组...

    大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解的是第34讲:数组的传递.在应用数组的时候,我们往往需要要把数组的值由一个数组传递给另外一个数组,就如同变量的传递一样: A=B '把B值赋给 ...

  5. access vba 常量数组赋值_VBA数组是什么?有何作用?别担心,你只需用1分钟就明白它是什么...

    Hello,大家好,在前面我们说过Excel函数中间的数组含义,那么你是否知道VBA中间的两个数据处理利器字典+数组呢?他们一旦结合起来将会发挥无可估量的作用,提升执行效率就在分秒之间.今天我们先说说 ...

  6. 【Groovy】Groovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )

    文章目录 一.字符串切割 1.使用 Java 语法切割字符串 2.使用 Groovy 语法切割字符串直接为变量赋值 3.数组赋值给变量 变量个数小于等于数组长度 二.完整代码示例 一.字符串切割 在 ...

  7. 动态二维数组赋值及for循环遍历和toString遍历

    package com.Summer_0421.cn;import java.util.Arrays;/*** @author Summer* 动态二维数组赋值及for循环遍历和toString遍历* ...

  8. android 数组赋值字符串_c语言中的字符数组与字符串

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...

  9. 数据数组赋值_嵌入式-数组赋值

    C语言中表达数据的基本类型时,用基本数据类型描述,例如整型,字符型,浮点型.在表达数据的复杂结构时,使用了构造数据类型这样的特殊类型描述,例如数组,结构体,共用体.数组是最常用的构造类型,也是最简单的 ...

最新文章

  1. vivado调用modelsim
  2. 13条注释 tips
  3. [SCOI2012] 喵星球上的点名
  4. HDU6438 Buy and Resell 解题报告(一个有趣的贪心问题的严格证明)
  5. 企业面试中关于MYSQL重点的28道面试题解答
  6. 运算符 python
  7. centos 切换用户_【站长亲测】迈拓维矩kvm切换器8口usb高清VGA显示器鼠标键盘切屏共享器8进1出...
  8. Java通过JNI/JNA加载dll库文件调用C接口,出现“java.lang.UnsatisfiedLinkError:包名.类.方法(参数)”问题
  9. 关于JavaScript DOM 编程艺术这本书
  10. java如何进行传感器数据传输_使用Wio Terminal通过HTTP请求获取并展示传感器实时数据...
  11. 通讯录管理系统(C++基础 汇总案例)
  12. Cutter - Cut Crop Video for Mac(视频剪辑格式转换工具)
  13. gnuplot详细操作
  14. 软件测试工程师职业规划
  15. swiper如何禁止用户滑动
  16. 程序员如何通过造轮子走向人生巅峰?
  17. python 老男孩全套教程-老男孩全栈python视频教程104天【百度网盘】
  18. 读书笔记-----跟任何人都聊得来
  19. Influx 安装、配置
  20. 系统特征根_20160204

热门文章

  1. resultType=int 和 resultType=java.lang.Integer
  2. 各大平台免费接口,非常适用
  3. BETWEEN AND 操作符
  4. rosetta stone fatal application error: #1141错误 (罗塞塔石碑1141) 解决方法
  5. Win8.1/Win8/Win7桌面图标无法拖动怎么办
  6. 大众 mib android auto,【图】加入互联基因 体验大众第二代MIB多媒体_汽车之家
  7. 机器学习笔记 - 使用TensorFlow进行音乐生成
  8. “剑指Offer”数据结构篇:java实现
  9. 中国人民银行清算总中心CDA业务数据分析师培训正式开课
  10. 解决Mac上MAMP Pro 80端口被占用