c语言。关于动态分配一维数组的问题

c语言。关于动态分配一维数组的问题为什么输出结果是垃圾值

第1个回答  2018-09-20
#include <stdio.h>#include <malloc.h>int main(void){ int len; int *p =0; int i; printf("请输入您要决定该数组元素的个数:"); scanf ("%d", &len); p =(int *)malloc(sizeof(int) * len);//申请内存空间要放在这里,int不一定都是4字节 printf("请输入每个数组元素的值:"); for(i=0; i<len; i++) {  scanf ("%d", &p[i]); } for(i=0; i<len; i++) {  printf ("p[%d]= %d\n", i, p[i]); // <------------方括号里面的是索引值 }  free(p); // <--------------记住要释放,养成好习惯 return 0;}

这才是你想要的效果

本回答被提问者和网友采纳
第2个回答  2018-09-20

由于你发的图片看不清楚,我就按照大概思路编写了一下。


估计你是在第8行sizeof(int)的位置迷路了;第4行的语句和第8行的语句作用相同,二者有其一即可,也许你是分布操作迷路了。

第3个回答  2018-09-20
写的什么? 完全看不清楚

C语言动态内存分配的疑问
1、你关于一维数组和指针是理解正确了,但二维(指针的指针)理解还不到位,需要再多看书。例如字符指针是 char *str 定义的,这是一维的指针,指针是变量,指针变量里面存储的是字符串的起始地址。而二维的指针,即指针的指针,是定义了又一个指针,指向的是指针变量,例如 char **str 的意思是:...

C语言可以实现为一维数组动态分配内存吗?
可以。。例子如下:include <stdio.h> include <malloc.h> void main(void){ int len,i, *p;printf("输入要存放元素的个数:");scanf("%d", &len); \/\/输入长度构造动态一维数组 p = (int *)malloc(sizeof(int)*5);for(i=0; i<len; ++i)scanf("%d",(p+i)); \/\/ p+i等同于...

在C语言中如何使用malloc动态申请一维数组?
malloc()函数用来动态地分配内存空间,其原型为:void*malloc(size_tsize);描述:(参数描述)Size是以字节为单位分配的内存空间量。【功能描述】Malloc()在堆中分配指定大小的内存空间来保存数据。函数执行后,此内存空间未初始化,且其值未知。如果希望在分配内存的同时进行初始化,可以使用calloc...

C语言中怎样定义动态一维数组
在C语言中,数组的定义都是固定长度的,长度不允许变化。可以通过链表的方式来达到定义”动态数组“的等价功能,举例如下:链表节点定义如下:struct node{ int data; \/\/ 数据域 struct node *next; \/\/ 指针域};存放数据时可以对节点中的node赋值即可,如:struct node *p; \/\/ 定义一个链...

...数据结构(C语言版)》中,不能用动态分配的一维数组来实现循环队列。为...
可以的,不过在初始化时开辟的空间要是一定的。这和用数组定义一样。因为当空间满时不能用realloc来重新分配内存。我是这么理解的。如果错了的话请指点。

...用动态内存分配方式,声明一个长度为10的一维数组,实现对数组元素的输...
include<stdio.h>#include<malloc.h>#define N 10int *f1(int n) { int *p; p=(int *)malloc(n*sizeof(int)); return p; }void input(int *a,int n) { int i; for ( i=0;i<n;i++ ) scanf("%d",&a[i]); }void output(int *a,int n) { int i; for ( i=0;...

C++如何用new动态开辟一个一维字符数组
C++用new动态开辟一个一维字符数组步骤如下:1、new 分配内存,通用格式是:类型名 * 指针 = new 类型名;如 int * pi = new int;类型可以是基本数据类型、结构体、自定义类等。2、delete 来释放内存,通用格式是:delete 指针名;注意 delete 与 new 配对,只能释放 new 分配的内存。delete只能...

C语言——动态数组的创建和使用
我们先来了解一维动态数组的创建与使用。其基本语法为:类型说明符 * 数组名 = (类型说明符*)malloc(数组长度 * sizeof(类型说明符)),其中`malloc`函数用于动态分配内存空间。接下来是二维动态数组的创建与使用。具体实现代码中已包含详细注释,如有疑问欢迎在评论区提问。希望本篇文章能对您有所帮助...

C语言怎样开一个大小为1000000的一维数组,直接弄好像运行不了。
通常用两个办法解决这个问题:声明一个全局数组。就是在所有函数之外声明,如int a[1000000];就可以了。在需要的函数中用malloc函数动态申请内存,如int *pt=(int *)malloc(sizeof(int)*1000000);就可以了。用完后要用free(pt);释放所申请的内存空间。

c语言中一维数组为什么一定要对长度定义,不能自动补0而二维数组就可以没...
首先要明确数组的在计算机的分配方式。计算机会分配一块《连续》的内存给数组来使用,这样就可以通过《下标》很方便的访问数组的元素。因此数组的长度就一定是要固定的,因为内存是一直在动态的分配和释放的,如果数组的长度不固定,那么数组后面的内存到底还要不要分配给别人。如果分配了,数组忽然要增加,...

相似回答