C++ code:数组初始化
具有初始化的数组定义,其元素个数可以省略,即方括号中的表达式可以省略。这时候,最后确定的元素个数取决于初始化值的个数。例如:
#include<iostream>
using namespace std;
int main()
{
int a[] = {,,,,};
for (int i = ; i < sizeof(a) / sizeof(a[]); ++i)
cout << a[i] << " ";
cout << "\n";
cin.get();
return ;
}
运行结果:
程序中,用了sizeof(a),即a数组的字节数。还有sizeof(a[0]),即第一个元素所占空间的字节数,因为是整形数组,所以相当于sizeof(int),在32位编译器中整形数程度长度为4。a数组有若干个元素,每个元素有sizeof(a[0])个字节,所以两者相除就是元素个数。这样表示的用意在于可维护性。(因为数组元素个数随着编程需要可能也会变化。在稍大一点的编程中,输入过程与处理过程往往分离,即中间相隔许多语句,所以,并不能一下子直观得看到数组元素个数的值,而根据数组名和其元素的信息,获取元素个数的方式,就带有很好的通用性。for循环的结构描述就无须跟着数组的初始化变动而改动了)
数组默认值:
对于没有初始化的数组,分两种情况:一种是全局数组和静态数组,也就是在函数外部定义的,或者加上static修饰的数组定义,其元素总是全被清零:另一种是局部数组,就是在函数内部定义的数组,它们的值是不确定的。例如:
#include<iostream>
using namespace std; int array1[] = { , , };
int array2[]; int main()
{
int array3[] = {};
int array4[]; cout << "array1: ";
for (int i = ; i < ; ++i)
cout << array1[i] << " "; cout << "\narray2: ";
for (int i = ; i < ; ++i)
cout << array2[i] << " "; cout << "\narray3: ";
for (int i = ; i < ; ++i)
cout << array3[i] << " "; cout << "\narray4: ";
for (int i = ; i < ; ++i)
cout << array4[i] << " "; cout << "\n"; cin.get();
return ;
}
数组的这种初始化规定方式源于程序运行的空间布局,函数中的局部数组是随着函数调用而创立的,而函数外部的数组是在整个程序运行中起作用的,驻于全局数据区,在运行起始时为0。
二维数组:
使用二维数组,可以按行、列下标访问对应元素。例如:
#include<iostream>
using namespace std; int main()
{
int array1[][] = {,,,,};
int array2[][] = { { , }, {} }; cout << "array1: ";
for (int i = ; i < ; ++i)
for (int j = ; j < ; ++j)
cout << array1[i][j] << ", "; cout << "\narray2: ";
for (int i = ; i < ; ++i)
for (int j = ; j < ; ++j)
cout << array2[i][j] << ", "; cout << "\n"; cin.get();
return ;
}
C++ code:数组初始化的更多相关文章
- Linux Kernel代码艺术——数组初始化
前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点摸不着头脑: const sys_call_ptr_t sys_call_table[__NR_syscall_max+ ...
- Linux Kernel代码艺术——数组初始化【转】
转自:http://www.cnblogs.com/hazir/p/array_initialization.html 前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点 ...
- 从C过渡到C++——换一个视角深入数组[初始化](1)
从C过渡到C++--换一个视角深入数组[初始化](1) 目录 从C过渡到C++--换一个视角深入数组[初始化](1) 数组的初始化 从C入手 作用域 代码块作用域 文件作用域 原型作用域 函数作用域 ...
- 用vector容器代替数组 ——使用数组初始化vector对象
在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...
- java数组初始化
java数组初始化 //静态初始化数组:方法一 String cats[] = new String[] { "Tom","Sam","Mimi&qu ...
- java 数组初始化
一维数组 1) int[] a; //声明,没有初始化 2) int[] a=new int[5]; //初始化为默认值,int型为0 3) int[] a={1,2,3,4,5} ...
- [转]Java数组初始化详解
一维数组1) int[] a; //声明,没有初始化 2) int[] a=new int[5]; //初始化为默认值,int型为0 3) int[] a={1,2,3,4,5}; ...
- C++中数组初始化
#include<iostream>using std::cout;using std::endl;int arr1[5];int arr2[5] = {1,3,5};int main() ...
- 通过数组初始化链表的两种方法:指向指针的引用node *&tail和指向指针的指针(二维指针)node **tail
面试高频题:单链表的逆置操作/链表逆序相关文章 点击打开 void init_node(node *tail,char *init_array) 这样声明函数是不正确的,函数的原意是通过数组初始化链表 ...
- No1_3.数组初始化_Java学习笔记
public class HelloArray { public static void main(String[] args) { // TODO Auto-generated method stu ...
随机推荐
- Adobe Premiere Pro CC ------ 快捷键
ctrl + ~:全屏 Esc:退出全屏
- 网络编程基础【day09】:socket编程入门(一)
本节内容 1.OSI七层模型 2.概述 3.关系图 4.代码逻辑图 5.socket概念 一.OSI七层模型 二.概述 socket通常也称作"套接字",用于描述IP地址和端口,是 ...
- Linux记录-分区(df/fdisk/mount/umount/fuser)
1.查看磁盘挂载(df -TH) 2.卸载umount /dev/vdb1 3.查杀用户进程(fuser -m -v -i -k /dev/vdb1) 4.再次卸载umount /dev/vdb1,并 ...
- Hive记录-加载文件进行查询操作
Hive可以运行保存在文件里面的一条或多条的语句,只要用-f参数,一般情况下, 保存这些Hive查询语句的文件通常用.q或者.hql后缀名,但是这不是必须的, 你也可以保存你想要的后缀名.假设test ...
- vuex2.0源码分析
当我们用vue在开发的过程中,经常会遇到以下问题 多个vue组件共享状态 Vue组件间的通讯 在项目不复杂的时候,我们会利用全局事件bus的方式解决,但随着复杂度的提升,用这种方式将会使得代码难以维护 ...
- MySQL日期时间格式化参数
MySQL中常常会用到对日期的格式化,比如按某时间格式计算间隔,按某时间格式统计信息等等,所以整理了一下日期格式化的参数,可以根据自己的需求进行组合使用.使用例子如下: (1)SELECT DATE_ ...
- PHP7 学习笔记(九)phpsize动态编译openssl扩展 (微信公众平台)
先吐槽,微信公众平台授权出问题了,尽然访问不了 一.问题描述: 使用PHP中的库函数file_get_contents时出现Unable to find the wrapper "https ...
- Java入门系列(十)Java IO
概述 总体而言,java的读写操作又分为两种:字符流和字节流. 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件. 什么是流? ...
- javascript 回到顶部
<script type="text/javascript"> window.onload = function(){ var timer = null; //用于判断 ...
- Storm 集群
Apache Storm Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存 ...