c++中怎么获取数组中元素的个数

c++中怎么获取数组中元素的个数,第1张

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++中如何从文件中读取数据给整形数组数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10073072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存