数组中元素的位置数组中元素的位置一个权威专家的解读
本文目录
- c++中怎么获取数组中元素的个数?
- 数组元素之所以相关,是因为它们具有相同的?
- 数组[0……4,-1……-3,5……7]中含有的元素个数是多少,关于数据结构的,求大神?
- c++如何确认数组的元素为空?
- 高中数学数组是什么意思?
c++中怎么获取数组中元素的个数?
C++中数组可分为堆区的数组和栈区的数组,对于两种数组C++都没有函数可以直接获取数组的元素的个数。一、堆区的数组堆区的数组是自己申请的,比如用new申请空间:int* arr = new int[10];堆区的数组不能计算出包含元素个数。二、栈区的数组栈区的数组是系统自动分配的,如:[cpp] view plain copyint arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
栈区的数组可以通过以下两种方法得出元素的个数:(1)[cpp] view plain copyint 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 copyint arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
int *pbeg = begin(arr);
int *pend = end(arr);
auto length = pend - pbeg;//数组元素个数
数组元素之所以相关,是因为它们具有相同的?
同一数组的元素
①具有相同的数据类型。
②且相邻的存储单元的存储地址是连着的。
int num[4] = {0,1,2,3};
那么num[0],num[1],num[2],num[3] 它们的数据类型都是整型,且存储单元依次相连,可以依次访问。
数组[0……4,-1……-3,5……7]中含有的元素个数是多少,关于数据结构的,求大神?
在数据结构中,数组中的的元素是按逗号隔开的,所以你的题目中无论什么数字,都是3个元素。
c++如何确认数组的元素为空?
这无法确认,除非用户自己规定了记号,当数组里有规定的记号时就认为空了,比如空字符串就是字符数组的第一个元素为'\0'的字符串。一般情况下是这样处理的:当数组里的数据已经失去存在的意义时,就认为它空了,可以用新的数据来覆盖了——根本没有“清空”的必要,也不可能真正清空,任何符号在数组里其实都是“数据”。所以数据只有有效与无效之别,没有有数与无数之分。有时候,希望数组里一开始或在运行中的某个时刻成为全0或其他符号,那实际上就是后续代码需要的数据,并不是“清空”的意思。对于静态声明的数组,可以这么做:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
int a[10]={1,2,3,4,5,6,7,8,9,10},i,f=1<<sizeof(int)*8-1;//用最小的int数做空标记
for(i=0;i<10;printf("%3d",a[i++]));//数组a中的数据使用完毕
printf("\n");
a[0]=f;//认为a数组空了
if(a[0]==f)//检测到a中数组无效了,就可重新输入数据
for(i=0;i<10;scanf("%d",a+i++));
printf("\n");
return 0;
}如果是动态申请的数组,那就更好办了,数组的数据失效后,用free释放空间并使指针为NULL即可,需要时重新动态申请。如:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void){
int *p,i;
p=(int *)malloc(sizeof(int)*10);//动态申请数组空间
for(i=0;i<10;scanf("%d",p+i++));//输入数据
for(i=0;i<10;printf("%d ",p[i++]));//数据使用完毕
free(p);//释放空间
p=NULL;//使指针无效
printf("\n");
return 0;
}
高中数学数组是什么意思?
数组:
数组是相同类型数据的有序集合。
数组描述的是相同类型的若干个数据按照一定的先后次序排列组合而成
其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。