如何自定义一个长度可变长度数组数组

C++ 结构体内定义可变长度的数组问题
[问题点数:20分,结帖人a]
本版专家分:0
结帖率 99.02%
CSDN今日推荐
本版专家分:0
本版专家分:67244
2013年8月 Linux/Unix社区大版内专家分月排行榜第一2012年11月 Linux/Unix社区大版内专家分月排行榜第一2012年10月 Linux/Unix社区大版内专家分月排行榜第一2012年9月 Linux/Unix社区大版内专家分月排行榜第一2012年7月 Linux/Unix社区大版内专家分月排行榜第一2012年6月 Linux/Unix社区大版内专家分月排行榜第一2012年5月 Linux/Unix社区大版内专家分月排行榜第一2011年11月 Linux/Unix社区大版内专家分月排行榜第一
2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
本版专家分:6937
本版专家分:0
本版专家分:13365
本版专家分:0
本版专家分:39985
2014年11月 C/C++大版内专家分月排行榜第三
本版专家分:94
本版专家分:20
本版专家分:619
本版专家分:11477
本版专家分:873
本版专家分:39985
2014年11月 C/C++大版内专家分月排行榜第三
本版专家分:619
本版专家分:347
本版专家分:9319
2013年8月 C/C++大版内专家分月排行榜第三
本版专家分:39985
2014年11月 C/C++大版内专家分月排行榜第三
本版专家分:4
本版专家分:31777
2014年4月 C/C++大版内专家分月排行榜第二
2016年2月 C/C++大版内专家分月排行榜第三2016年1月 C/C++大版内专家分月排行榜第三
本版专家分:336
本版专家分:57224
2011年6月 总版技术专家分月排行榜第三
2011年11月 专题开发/技术/项目大版内专家分月排行榜第一2011年10月 专题开发/技术/项目大版内专家分月排行榜第一2011年9月 专题开发/技术/项目大版内专家分月排行榜第一2011年8月 专题开发/技术/项目大版内专家分月排行榜第一2011年7月 专题开发/技术/项目大版内专家分月排行榜第一2011年6月 C/C++大版内专家分月排行榜第一
2011年7月 C/C++大版内专家分月排行榜第二2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
2011年5月 C/C++大版内专家分月排行榜第三2008年1月 C/C++大版内专家分月排行榜第三2007年12月 C/C++大版内专家分月排行榜第三
本版专家分:31777
2014年4月 C/C++大版内专家分月排行榜第二
2016年2月 C/C++大版内专家分月排行榜第三2016年1月 C/C++大版内专家分月排行榜第三
本版专家分:619
本版专家分:370052
2017年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本版专家分:168
本版专家分:168
匿名用户不能发表回复!
其他相关推荐自定义数组长度接受输入的长度并倒置_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
自定义数组长度接受输入的长度并倒置
你可能喜欢c语言中如何自定义数组长度_百度知道
c语言中如何自定义数组长度
我想让用户自己来输入需要多少个数,怎样定义数组,来达到这样的效果?因为数组长度不能用未知数,所以不知道该怎么实现。请达人帮忙~~谢谢!...
我想让用户自己来输入需要多少个数,怎样定义数组,来达到这样的效果?因为数组长度不能用未知数,所以不知道该怎么实现。请达人帮忙~~ 谢谢!
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
iamdebugman
来自知道合伙人认证行家
iamdebugman
电脑类行家
采纳数:33576
获赞数:50728
学的虽是计算机网络,但是读的书很多也很杂也是一知半解,所以到现在我也不知道我有啥能力!只知道努力!
动态分配的数组可以自定义数组的长度,示例如下:#include&&stdio.h&#include&&string.h&#include&&stdlib.h&int&main(){printf(&输入要分配的内存大小:&);int&scanf(&%d&,&&size);&&//输入自定义的数组长度int&*pstart&=&(int&*)malloc(sizeof(int)&*size);if&(pstart==0)&{printf(&不能分配内存\n&);return&0;}memset(pstart,&0x00,&sizeof(int)&*&size);int&for&(inx=0;&inx!=&++inx)&pstart[inx]&=&for&(inx=0;&inx!=&++inx)&printf(&%d\t&,&pstart[inx]);printf(&\n&);return&0;}
wuhouzheng
wuhouzheng
采纳数:439
获赞数:7729
擅长:暂未定制
数组不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如:
#define FD 5
int a[3+2],b[7+FD];
……}是合法的。但是下述说明方式是错误的。
……}但是,数组可以超界使用。
本回答被提问者采纳
ChenB_2009
ChenB_2009
采纳数:165
获赞数:960
楼上有些挺深奥的其实有两种方法:第一种:用常量表达式#define N 5//任定义一个数main(){int a[N];//运用常量表达式......}第二种:#include&stdio.h&main(){int a[80];//数组a元素的个数定义大点int i,n;scanf(&%d&,&n);//输入n的值for(i=0;i&n;i++)//通过n的值控制了输入数的个数scanf(&%d&,&a[i]);}
采纳数:2892
获赞数:37307
C99标准支持不定长数组(代价是不能用goto语句)。在输入语句后声明就可以了。不过现在的编译器对C99的支持都不好```对于ANSI C(C89)一般的编译器都支持。不过数组长度必须是编译期确定的常量,运行时不能改变。所以采用动态分配实现。例如#include&stdio.h&#include&stdlib.h&/*这个头文件在用malloc和free等分配内存函数时必须被包含*/int main(){int n,*a=NULL;printf(&Please input the num of elements:\n&); scanf(&%d&,&n); if(!(a=(int *)malloc(n*sizeof(int))){printf(&Memory is not accessed!\n&);exit(1);/*内存分配失败时异常退出。也需要stdlib.h*/}/*如下使用方法实质是相同的*/scanf(&%d&,a[0]);scanf(&%d&,a+0);/*这里写代码*/ free(a);/*用完之后需要释放,否则会造成内存泄漏*/} return 0;}其它还有calloc、realloc等,C++里也可以用new、delete等运算符(如 confuciuskg 所述),具体用法可以直接百度。
参考资料:
confuciuskg
confuciuskg
采纳数:94
获赞数:1214
擅长:暂未定制
采用动态分配即可实现,例如: #include&iostream&
void main() { int* pArray = NULL; //动态数组 int N; // 动态确定的数组个数 cout && &Please input the number of element in the Array: &; cin && N; // 从屏幕中输入数组元素个数 pArray = new int[N]; // 根据N的大小动态分配内存
for(i = 0; i & N; i++)cin && pArray[i]; // 从屏幕中依次输入数组元素 cout && &The elements of the Array you inputed is:\n &; // 依次输出这个数组 for(i = 0; i & N; i++)cout && pArray[i] && delete pA // 释放动态分配的内存 }
changfapiaosa
changfapiaosa
采纳数:68
获赞数:194
int *p=NULL,n;printf(&Please input the num of elements:\n&);scanf(&%d&,&n);p=(int *)malloc(n*sizeof(int));if(!p)
printf(&Memory is not accessed!\n&)else
这里你就可以自由使用了,这个我是屡试不爽啊!哈哈
采纳数:4156
获赞数:27943
int *a;scanf(&%d&,&n);a=(int *)malloc(sizeof(int)*n);
其他5条回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。数组是一组有序数据的集合,每个元素都属于同一个数据类型。
一维数组的定义:
类型符& 数组名[常量表达式]
常量表达式中,可以包括常量和符号常量,int a[3+5]是合法的。但是不能包含int a[n],C语言不允许动态数组。
子函数中是可以存在int a[2*n]的,但是不能是static局部变量,因为子函数中的数据在执行时,n已经确认,可以在
栈中分配出int n[2*n]的地址空间。
在定义时,初始化:
1) int a[10] = {0,1,2,...,9};& //使用{}l=括号
2) int a[10] = {0,1,2,3,4};& //部分赋值,未赋值的元素自动赋值0
3) int a[] ={1,2,3,4,5};& //可以不需要指定数组长度
一维数据的引用,数组名[下标]
二维数据定义:
类型符 数组名[常量表达式][常量表达式]
二维数组的引用 数组名[下标][下标]
二维数组的初始化
1) int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};&& //每个行元素单独赋值
2) int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};&& //所有元素写在一起赋值
3) int a[3][4] = {{1},{5},{9}};&& //对每个行元素,都部分赋值
4) int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};& //C语言可自动推断出行元素个数
用来存放字符的数组,字符数组。其中的每个元素存放一个字符。最后自动加空字符'\0'
char [10];
字符数组的初始化,char c[10] = {'I',' ','a',....'y'};&&& //' '表示空格
C中的字符串是通过字符数组的形式来处理的,结束标志'\0',在ASCII中表示0。
可以通过字符串来对字符数组进行赋值。
char[] = "I am happy";
如果定义的字符数据长度比字符长,系统自动补'\0'
char c[10] = {"china"};& printf("%s",c);& //输出只打印到第5个字符
C语言函数提供的字符串处理的函数。必须包含#include&string.h&
1) puts(字符数组);
&   char str[] = {"string"};&&& puts(str);& //输出时将'\0'转换为\n,
2) gets(字符数组);
&   char str[10];& gets(str);& //输入字符,自动加'\0'
&  puts和gets函数只能处理一个字符数组。
3) strcat(字符串1,字符串2);
&  char str1[30] = {""};
&  char str2[] = {"china"};
  &printf("%s", strcat(str1,str2));&& //str1必须足够大,将str2链接到str1后
4) strcpy(字符数字1,字符串2);
&  char str1[10],str2[] = "china";
&  strcpy(str1,str2);&& //str1只能是数组名的形式,字符数组1必须定义的足够大,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&   //赋值时,只是将6个元素,放在str1的前6个单元(包括'\0'),之后的4个单元,仍是str1的字符。
  &strncpy(str1,str2,n);& //将str2的前n个字符,copy到str1的前n个字符,不包括'\0'。‘’
&  //字符串之间不能直接用str1& = str2
5) strcmp(字符串1,字符串2);
&  strcmp(str1,str2);& //比较str1和str2,直到出现不同的字符和'\0'为止。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&   //str1 == str2,则返回值0,str1 & str2, 则返回正整数,str1 & str2, 则返回负整数
&  //字符串之间不能直接用 str1 & str2
6) strlen(字符数组);
&  char str[10] = "China";
&  printf("%d", strlen(str));&& //输出结果为5,表示实际的字符的个数,不包括'\0'
7) strlwr(字符串);&& //将字符串的大写转换为小写字母
8) strupr(字符串);& //将字符串的小写转换为大写字母
用户自定义结构体类型:
struct& 结构体名& {成员表列};
struct Student {& char name[20];}& student1;
定义结构体变量:
结构体名& 结构体变量
struct Student& student1;&& //必须加struct来执行结构体类型名
也可以不指定类型名,直接指定结构体变量
  struct {& char name[20];}& student1;
1)在定义结构体变量时,初始化:
  struct Student b = {.name = "zhang"};&& //对结构体成员的引用,必须使用成员运算符"."
2)通过结构体变量名.成员名来引用结构体变量的成员
  student1.num = 10010;
3)如果成员本身就是一个结构体,可以多次使用"."来引用:
  student1.birthday.month
4)同类型的结构体变量可以相互赋值:
  student1 = student2;
5)可以引用结构体变量的地址,也可以引用结构体变量成员的地址:
  &student1.num&& &student1
结构体类型的指针,只能通过-&来引用其中的成员变量
定义结构体数组:
结构体类型& 数组名[数组长度]
struct Person leader[3];
定义结构体指针:
struct Student *& //如果p指向一个结构体变量stu,结构体变量.成员名(stu.num)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& (*p).成员名((*p).num)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&p-&成员名(p-&num)等价
指向结构体数组的指针
struct Student { char name[];};
struct Student stu[3];
struct Student *p;
for(p= p &stu +3; p++);
用结构体变量的数组或指针做函数参数
void input(struct Student stu[]);
共用体类型,同一段存储空间中,存储不同的数据结构,每次只能选择一种。
定义共用体变量:
union 共用体名 {成员表列}& 变量表列;
union Data {} a,b,c;
引用共用体变量: a.i、a.ch、a.f
使用共用体类型数据时,同一内存段某一时间段内,只能用来存放一种数据结构
共用体中起作用的是最后一次被赋值的元素。
a.ch = 'a';& a.f = 1.5;& a.i=40;&& //a中的值为40
公用体指针,也是通过.来引用其中的变量
如果一个变量的值只能是几种可能的值,可以定义为枚举(enum)类型
声明枚举类型: enum [枚举名] {枚举元素列表}
enum Weekend {sun, mon, tue, wed, thu, fri, sat};
声明枚举变量: 枚举类型名 变量名
C编译器对枚举元素是按常量来处理的。故称为枚举常量,所以不能对枚举变量进行赋值。
C语言按顺序,对他们进行赋值0,1,2,,,
printf("%d", workday);&& //输出相应的值
用typedef来重新声明类型。
typedef struct {} D& //声明一个新类型名Date
typedef int Num[100];&& //声明Num为整型数组类型名& N a为整型数组名,有100个元素
  NUM& &n就是一个数组,含有100个元素
typedef char * S&&& //String p,定义String为字符类型指针
typedef int (*Pointer) ();&&& //声明Pointer为指向函数的指针类型
阅读(...) 评论()对于不知道数组长度,需要自己输入,该怎么定义数组?_我要提问_牛客网
对于不知道数组长度,需要自己输入,该怎么定义数组?
如果不知道数组长度,需要自己输入一个数组长度,那么数组初始化怎么定义,,,
例如: 输入N个数,冒泡排序,
N个 数(数组中的下标
0-(N-1) )
排序后的内容
(各位大神们,求告知,就是不知道怎么初始化数组)
不胜感激!!!1
今天 10:17:32
今天 17:54:01
今天 19:54:19
今天 18:33:38
今天 19:40:49
今天 12:19:29
今天 14:30:39
今天 13:48:07
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
京ICP备号-4
扫一扫,把题目装进口袋

我要回帖

更多关于 Java可变长度数组 的文章

 

随机推荐