c语言中如何定义动态指针数组
答案:4 悬赏:0 手机版
解决时间 2021-12-03 12:31
- 提问者网友:暮烟疏雨之际
- 2021-12-03 03:07
c语言中如何定义动态指针数组
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-12-03 04:02
1、使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。
2、例程,分配3行4列二维数组:
#include
#include
int main()
{
int **a;
int i, j;
a = (int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for (i = 0; i < 3; ++i){//为每列分配4个大小空间
a[i] = (int*)malloc(sizeof(int)*4);
}
//初始化
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
a[i][j] = i+j;
}
}
//输出测试
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
printf ("%d ", a[i][j]);
}
printf ("
");
}
//释放动态开辟的空间
for (i = 0; i < 3; ++i){
free(a[i]);
}
free(a);
return 0;
}
2、例程,分配3行4列二维数组:
#include
#include
int main()
{
int **a;
int i, j;
a = (int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for (i = 0; i < 3; ++i){//为每列分配4个大小空间
a[i] = (int*)malloc(sizeof(int)*4);
}
//初始化
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
a[i][j] = i+j;
}
}
//输出测试
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
printf ("%d ", a[i][j]);
}
printf ("
");
}
//释放动态开辟的空间
for (i = 0; i < 3; ++i){
free(a[i]);
}
free(a);
return 0;
}
全部回答
- 1楼网友:梦中风几里
- 2021-12-03 04:48
int size=5; //数组大小 自己可以随便定义 或是让用户输入
char *p=new char[size]; //或是int 等其他类型类似
之后把p当数组用就好,比如p[0]就是数组的0号元素
char *p=new char[size]; //或是int 等其他类型类似
之后把p当数组用就好,比如p[0]就是数组的0号元素
- 2楼网友:酒醒三更
- 2021-12-03 04:40
假设你想定义的数组是 int a[n],动态的定义方式是:
#includeint main() {
...
int *a = (int*)malloc(sizeof(int)*n);
...
}
- 3楼网友:一叶十三刺
- 2021-12-03 04:28
可以这样子写
int n;
printf("请输入你想定义的数组的大小:\n");
scanf("%d",&n);
int *a = (int *)malloc(n*sizeof(int));//申请n个整形数据空间 ,头文件为stdlib.h/malloc.h
if(a == NULL)//申请失败返回-1
{printf("aply error\n"); return -1;}
memset(a, 0, n); //初始化申请到的空间为0,头文件为string.h
但是定义不了动态数组
int n;
printf("请输入你想定义的数组的大小:\n");
scanf("%d",&n);
int *a = (int *)malloc(n*sizeof(int));//申请n个整形数据空间 ,头文件为stdlib.h/malloc.h
if(a == NULL)//申请失败返回-1
{printf("aply error\n"); return -1;}
memset(a, 0, n); //初始化申请到的空间为0,头文件为string.h
但是定义不了动态数组
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯