求数组的长度

在计算数组所有元素之和等等问题时,经常需要知道某一个数组的长度,其求解公式如下:

int data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

int size = sizeof(data) / sizeof(data[0]);

size就是数组data[]的长度。


数组作为实参和形参时,长度不同的原因:

#include "stdafx.h"
int add(int a[], int len)//此处使用*a,效果一样
{
   int sum = 0;
//实参在传递时,是当作指针来传递的,实际传递的是数组的第一个元素
<span style="color: rgb(51, 51, 51); font-family: Verdana; font-size: 13.600000381469727px; line-height: 18.399999618530273px;"></span><pre code_snippet_id="1586364" snippet_file_name="blog_20160224_1_8354007" name="code" class="cpp">//<span style="font-family: Verdana; font-size: 13.600000381469727px; line-height: 18.399999618530273px;">数组做型参时,数组名称当作指针使用!!</span>
printf("%d\n", sizeof(a));//4 for (int i = 0; i < len; i++) { sum += a[i]; } return sum;}int main(){ int data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int size = sizeof(data) / sizeof(data[0]); printf("%d\n", sizeof(data));//40 printf("结果是:%d\n", add(data, size)); return 0;}
 
 

结论:将函数的参数声明为数组和声明为指针是一样的。


特别注意:在初始化数组时,如果不知道数组的长度,如:double a[]={0.0};系统在计算sizeof(a)时,会默认它的值为8,sizeof(a[0])=8;从而数组a的长度将一直是1,不管你在此之前为它赋了多少个值。


你可能感兴趣的:(C++)