时间:2021-05-20
写程序的时候经常要定义这样一个数组,要前面程序运行后才能知道数组的大小,然而C语言不支持直接定义不定长数组的定义,但是我们可以通过动态数组实现一个不定长度的数组。
一维数组:
#include<stdio.h>#include<stdlib.h>//要使用malloc是要包含此头文件#include <memory.h>//要使用memset是要包含此头文件int main(){ int m; scanf("%d", &m);//scanf只是遇到回车符的时候结束,并没有把回车符输入,因此输入流中还有一个回车符 getchar();//把输入流中的回车符读走 int *p; p = (int*)malloc(m*(sizeof(int)));//动态申请内存 memset(p, 0, m);//初始化,每个元素都为零 int i; for (i=0;i<m; i++)//数组赋值 { p[i] = i; } for (i = 0; i <m; i++)//打印数组 { printf("%d,", p[i]); } free(p);//释放内存 getchar();//让程序停顿,好看到输出 return 0;}二维不定长数组
#include <stdio.h>#include <stdlib.h>//要使用malloc是要包含此头文件#include <memory.h>//要使用memset是要包含此头文件int main(){ int m, n; scanf("%d%d", &m,&n);//scanf只是遇到回车符的时候结束,并没有把回车符输入,因此输入流中还有一个回车符 getchar();//把输入流中的回车符读走 int **p; p = (int**)malloc(m*(sizeof(int*)));//二级指针所在地址申请内存 int i, j; for (i = 0; i<m; i++) p[i] = (int*)malloc(sizeof(int)*n);//一级指针所在地址申请内存 for (i = 0; i < m; i++) for (j = 0; j < n; j++) p[i][j] = i + j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("%d %p ", p[i][j], &p[i][j]); //输出每个元素及地址,每行的列与列之间的地址时连续的,行与行之间的地址不连续 } printf("\n"); } for (i = 0; i < m; i++) free(p[i]); free(p); getchar();//让程序停顿,好看到输出 return 0;}以上这篇C实现不定长数组的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、不定长参数的写法,用*变量名表示2、不定长参数累加3、不定长参数,使用**c接受m=23,n=56的值;传参时,a必写,b、c可以缺省deffun(a,b,
C语言不支持不定长数组,要么malloc,要么在动态的指定它的长度动态数组不能初始化,可使用memset1.int*p=(int*)malloc(num);2.
数组:复制传递(不要按照c/c++的方式去理解,c/c++中数组是引用传递),定长切片:引用传递,底层实现是3个字段array(数组)+len(长度)+cap(
如下所示:importjava.util.ArrayList;//java中申请不定长度数组publicclassTest01{publicstaticvoid
java中不定长参数的使用方法不定长参数方法的语法如下:返回值方法名(参数类型...参数名称)在参数列表中使用“...”形式定义不定长参数,其实这个不定长参数a