C++中数组可分为堆区的数组和栈区的数组,对于两种数组C++都没有函数可以直接获取数组的元素的个数。
一、堆区的数组
堆区的数组是自己申请的,比如用new申请空间:
int arr = new int[10];
堆区的数组不能计算出包含元素个数。
二、栈区的数组
栈区的数组是系统自动分配的,如:
[cpp] view plain copy
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
栈区的数组可以通过以下两种方法得出元素的个数:
(1)
[cpp] view plain copy
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
auto diff = sizeof(arr)/sizeof(int);
(2)
这种方法需要所用编译器支持C++11,14
[cpp] view plain copy
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
int pbeg = begin(arr);
int pend = end(arr);
auto length = pend - pbeg;//数组元素个数
1、打开Eclipse,新建项目,在项目src目录新建一个类,为了更好 *** 作数组,Java为数组提供length属性,用来获取数组长度,语法格式如下。
2、创建整形类型变量array,初始化赋值为{1, 2, 3, 4, 5},创建整形类型变量len,用变量array获取变量len的数组长度。
3、用下标来引用数组元素和获取数组长度,可以用循环语句来访问数组所有元素。
4、从前到后访问数组元素是数组的遍历,也是迭代。
5、在Java SE 50平台,增加了增强型for循环的语法,称为for-each循环,用来遍历数组更为合适。
6、创建整形类型数组,初始化赋值,用for-each循环,用变量aa访问数组array中的每个元素的值。
#include "stdafxh"
#include<iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
char filename[20];
int a[3][3]; //存储整数
cin >> filename;
ifstream ifile(filename,ios_base::in);
if(ifile) //文件打开成功
{
for(int i=0;i<8;i++) //读入八个整数
ifile>>a[i/3][i%3];
}
else
{
cout << "open file fail" << endl;
exit(1);
}
//这里你可以输出a[i][j]来验证是否正确读入
for(int i=0;i<8;i++)
cout << a[i/3][i%3] << " ";
cout << endl;
return 0;
}
c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)
如:
{
int data[4];
int length;
length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小
printf("length of data[4]=%d", length ); //输出length of data[4]=4
}
但,通过传递数组名参数到子函数中,以获得数组长度是不可行的。如:
int getLength(int[] a){
int length;
length=sizeof(a)/sizeof(a[0]); //这样是错误的,得到的结果永远是1
return length;
}
因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节。a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。
因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。
:数组特点:
数组是相同数据类型的元素的集合。
数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
对于VB的数组,表示数组元素时应注意:
下标要紧跟在数组名后,而且用圆括号括起来(不能用其他括号)。
下标可以是常量,变量,或表达式,但其值必须是整数(如果是小数将四舍五入为整数)。
下标必须为一段连续的整数,其最小值成为下界,其最大值成为上界。不加说明时下界值默认为1。
方法:
使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上,在使用时都把它定义成一个宏。
比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中则可以使用模板技术定义一个函数。
比如:template <class T>intgetArrayLen(T& array){return (sizeof(array) / sizeof(array[0]));}
这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。
基础语法
1、C语言数据类型
C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
2、常量与变量
常量其值不可改变,符号常量名通常用大写。
变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
以上就是关于c++中怎么获取数组中元素的个数全部的内容,包括:c++中怎么获取数组中元素的个数、JAVA怎样获取数组长度、C++中如何从文件中读取数据给整形数组数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)