我有一个数组变量,例如: -
int a[10];
假设我从1,2,3,4
到a[0]
添加了4个元素a[3]
。
现在我如何找到最大尺寸为a
的数组变量10
中存在多少元素?
我的方法是获取数组中存在的元素数量,假设用户将提供大于或等于零的输入: -
#include<iostream>
using namespace std;
#define SIZE 10
int main(){
int *a = (int*)malloc(sizeof(int)*SIZE);
int iCount=0;
int iNumberOfElements,iElements;
cout<<"\nEnter the number of elements to be entered:";
cin>>iNumberOfElements;
cout<<"\nEnter the elements(Please enter elements greater than or equal to zero):\n";
for (int jIndex = 0; jIndex < iNumberOfElements; jIndex++){
cin>>iElements;
while(iElements<0){
cout<<"\nPlease enter the element greater than or equal to Zero.\nRe-enter:\n";
cin>>iElements;
}
a[jIndex] = iElements;
}
for(int iIndex=0;iIndex<SIZE;iIndex++){
if(a[iIndex] >= 0){ //I am checking in this way assuming that user will give input >= 0
iCount++;
}
}
cout<<"\nThe total number of element present in the array is:"<<iCount<<endl;
return 0;
}
答案 0 :(得分:4)
你必须自己建立这个惯例。
例如,您可以将整个数组初始化为一个表示“未使用”的魔术常量,或者您可以通过单独的变量跟踪长度。
无论哪种方式,框架都无法帮助你,没有办法。无论你是否设置它们,数组都有10个元素。
答案 1 :(得分:1)
通过
int a[10];
您已为10个整数分配了具有不确定值的空间(如果数组具有静态存储持续时间,则为0)。当你说
我添加了4个元素,例如从[0]到[3]
开始的1,2,3,4
您可能意味着您已为元素指定了值。因此,它们没有以任何其他方式标记。
您可以将所有元素设置为-1
,以便确定是否已分配给它们,但要小心 - 您无法知道数组的结束位置! (只有在C ++中才能使用函数模板并将数组作为对数组的引用传递。)
答案 2 :(得分:1)
不使用计数器或使用默认值设置表格, 如果通过使用指针中的表的地址逐步添加或删除元素,然后计算两者之间的差异,则可以完成此操作:
int a[10],*ptr=a;
*ptr=1;
*++ptr=2;
*++ptr=3;
*++ptr=4;
printf("start addr : %p\ncurrent addr %p\n",
a,ptr);
printf("present in a : %d rest : %d\n",ptr-a+1,&a[9]-ptr);
答案 3 :(得分:-1)
您可以定义静态或易变变量,以跟踪数组中存在的数量或初始化数量。 在下面的程序中j跟踪数组a中的数字
int main()
{
int a[10];
static int j=0;
do{
scanf("%d",&a[i]);
if(a[i]>=0)
j++;
}while(a[i++]>=0);
}
答案 4 :(得分:-1)
可以使用简单的循环
计算数组中的元素数int i=0,count=0;
for(i=0;i<10;i++)
{
if(a[i]!='/0')
{
count++;
}
}
这里我是一个整数变量,count用于计算元素的数量。假设数组的最大大小为10,则使用值“10”。如果只向大小为10的数组输入4个元素,此代码将返回计数4.