c语言中怎么接收一的数组,在写程序前不知道这数组的大小,并且后面有对这数组的 *** 作!!!

c语言中怎么接收一的数组,在写程序前不知道这数组的大小,并且后面有对这数组的 *** 作!!!,第1张

接受数组的方法很多1维数组a[]你可以

func(int a);

func(int a[]);

func(int a[10]);

这3中方法的是没区别的,

但是要在函数中获取一位数组的长度是不可能的,这是C/C++的一个无法解决的问题。你可以再定义一个形参限定一下对数组 *** 作的大小,

比如func(int a,int N);

这样的前提是你要知道你所 *** 作数组必须长度小于N

数组大小就是指数组存储数据的个数,也可以说是数组长度。

数组简介:

数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。一般情况下,数组的元素类型必须相同,可以是前面讲过的各种基本数据类型。但当数组类型被指定为变体型时,它的各个元素就可以是不同的类型。数组和变量一样,也是有作用域的,按作用域的不同可以把数组分为:过程级数组(或称为局部数组)、模块级数组以及全局数组。C++数组长度 以及sizeof(), size(), length(), strlen()

c++中没有求数组长度的默认函数,只能自己写,但经常有初学者把sizeof(), size(), length(), strlen() 混淆掉。本篇博文具体解释一下如何求数组长度和这四个函数,以及可能遇到的问题。

C++求数组长度为:

int arr_length = sizeof(arr) / sizeof(arr[0]);

为了方便使用,在C语言中常定义宏来求数组长度

#define ARR_LEN(array, length){ length = sizeof(array) / sizeof(array[0]); }

使用时,直接调用宏函数即可,如

int arr[]={1,2,3,4,5};

int len;

ARR_LEN(arr, len); //此时len赋值为5

在C++中,也可以定义模板函数

template <class T>

int getArrayLen(T &array){

return sizeof(array) / sizeof(array[0]);

}

使用时,调用模板函数,如

string arr[]={"abc", "ab", "abcde", "1234567", "890"};

int len=getArrayLen(arr); //此时len赋值为5

这个声明中的x应当在声明以前就以知道。

例如:

#define x 3

int i=new int[x];

int k;

for (k=0;k<x;k++) i[k]=k;

for (k=0;k<x;k++) cout <<i[k] << " ";

===

或者:

int x;

cout << "enter x:" << endl;

cin >> x;

int i=new int[x];

int k;

for (k=0;k<x;k++) i[k]=k;

for (k=0;k<x;k++) cout <<i[k] << " ";

----

数组占的内存字节数: sizeof(int) x

对于数组int arr[]={1,2,3,4};可以用len=sizeof(arr)/sizeof(int);得到其大小len。

字符数组(一定是以\0结尾的)除了上面那个方法外,还可以通过指针用循环判断一下

int len=0;

while (p != '\0')

++len;

一般来说,不能用指针去判断数组到底有多少个元素

可以在函数中借用sizeof运算符,来获取数组大小。

1

获取数组a整体占用空间可以使用

sizeof(a)

该值为这个数组占用的总内存值,单位为字节。

2

获取数组元素个数可以用

sizeof(a)/sizeof(a[0])

该值为数组开辟的元素个数。

用sizeof即可以,数组的长度除以类型的长度,就可以得到数组的元素个数 如 struct A { } A a[22]; 长度就可以用sizeof(a)/sizeof(A)

C语言本身不提供查看动态分配的内存大小,因为分配内存是系统的API函数完成的。

但是通过调用系统的API函数可以查看内存分配大小,不然肯定无法释放这些内存了。

以windows为例:

#include<iostream>

using namespace std;

int main()

{

int p=(int )malloc(sizeof(int)10);

cout<<sizeof(p)<<endl;

cout<<_msize(p)<<endl;

system("PAUSE");

return 0;

}

以上就是关于c语言中怎么接收一的数组,在写程序前不知道这数组的大小,并且后面有对这数组的 *** 作!!!全部的内容,包括:c语言中怎么接收一的数组,在写程序前不知道这数组的大小,并且后面有对这数组的 *** 作!!!、数组的大小、c++中如何知道一个new出来的数组的大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存