c

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

中怎么获取数组中元素的个数?

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 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//数组元素个数

串和数组的区别?

字符数组内任意位置可写任意数据包括0x0,而字符串只有结束的位置有一个0x0,一但有了0x0这个数据,则字符串结束。对电脑而言只有二进制字节数组;对人脑才有字符、字符串、空字符结束符、数组等。
1、字符数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。C语言中没有字符串类型,字符串是存放在字符型数组中的。
2、例:
char c[10];
c[0]I; c[1] ; c[2]l; c[3]o; c[4]v; c[5]e; c[6] ; c[7]y; c[8]o; c[9]u;
以上定义了c为字符数组,包含10个元素。
由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:
int c[10];
但这时每个数组元素占2个字节的内存单元,浪费存储空间。[1]
字符数组也可以是二维或多维数组,例如:
char c[5][10];
即为二维字符数组。
3、字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s“abcdefghij”,则s[1]“a”,s[10]j,而字符串的零位正是它的长度,如s[0]10(※上述功能Ansistring没有。),这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。