当前位置:首页 > 图片 > 视野图片 > 正文
文章正文

c 动态申请数据存放在?

图片 > 视野图片 > :c 动态申请数据存放在? 是由美文导刊网(www.eorder.net.cn)为您精心收集,如果觉得好,请把这篇文章复制到您的博客或告诉您的朋友,以下是c 动态申请数据存放在? 的正文:


一.在C程序中,如何动态申请一个存储空间?

用之前用new 申请
用之后free掉


二.C语言中为何要申请动态存储空间?(c 动态申请数据存放在?)

所谓动态分配,就是需要的时候再分配,这是相对于静态分配而言的,静态分配就是一次分配完毕,不管你用多少。而动态分配则是按需分配。

第一点,也就是最简单的 你需要多少,你申请多少,不会造成浪费。

第二点,静态分配大多数都是在栈上分配的,栈的大小是有一场肠摆段肢灯扮犬堡华定限制的,当你使用的超过栈的大小的时候,就需要到堆上去申请,当然堆也有大小限制,但一般说来堆比栈大很多很多(c 动态申请数据存放在?)

其他答案

动态取决于程序员你自己,而如果不是动态那编译器就帮你指定到栈中去了,动态给于程序员更多的灵活性。当然场肠摆段肢灯扮犬堡华也得注意维护这些动态的内存。
gzz19890908187 2012-12-12 (c   动态申请数据存放在?)

查看"C/C++"分类更多问题

回顶部↑

三.C++动态空间申请

Array:: Array(int n)
{
p = new int[n];
int i;

for(i = 0; i < n; i ++)
p[i] = 0;
size = n;
}

Array:: Array(const int a[],int n)
{
p = new int[n];
int i;

for(i = 0; i < n; i ++)
p[i] = a[i];
size = n;
}

Array:: Array(const Array& v)
{
int i;
int *tmp;

*this = v;
tmp = new int[this->size];
for(i = 0; i < this->size; i ++)
tmp[i] = this->p[i];
this->p = tmp;
}
Array:: ~Array()
{
delete[] this->p;}

void Array:: Show()
{
int i;
for(i = 0; i < this->size; i ++)
cout << this->p[i] << ',';
cout << endl;
}
void Array::Resize(int n)
{
int *tmp = new int[n];
int i, len;

for(i = 0; i < (n < this->size ? n : this->size); i ++)
tmp[i] = this->p[i];
delete [] this->p;
this->p = tmp;
this->size=n;
}


四.C语言的动态分配内存中所谓的“动态”体现在哪?

  简单来说:动态体现在程序执行过程中而不是一开始就分配内存. 程序在开始执行的时候, 要处理的数据变量有两类:
  一类是一开始就分配内存的变量, 如下面定义的变量:
  int i;  int a[100]; //  另外一类就是动态分配内存的变量, 如需要在程序中利用一个100维的指针数组b:
double *b; // 肠筏斑禾职鼓办态暴卡这里只是定义了一个double类型的指针变量, 但并没有为数组分配内存  b=(double*)malloc(sizeof(double)*100); //当程序运行到这时才为数组b分配内存,这时程序占用的内存也相应的变大  free(b); //如果b不需要了, 就可以释放内存, 节省空间. 常用free是编程的好习惯


五.编写一个程序,完成从键盘输入任意n个int型数,要求使用new运算符动态申请数据空间存放数据。

想用多少个就用new申请多少个,想减少时,把刚申请的delete掉重新申请不就完了?


六.c++中进行动态内存分配后怎么保存该内存中的数据呢?

(c   动态申请数据存放在?)

c语言中动态分配和撤销内存采用malloc和free,c++中采用new和delete,虽然c++兼容c,也可以用malloc和free,但他们是库函数,而new和delete是运算符,执行效率要高,所以建议c++中内存分配用new和delete。
如果内存申请成功,new运算符返回一个指向所申请的内存空间首地址的指针,申请失败则返回NULL(不同编译器处理方法可能不同)。
如 int *p1 = new int;
float *p2 = new float(3.14159); /&#绩肠贯段卟灯诡犬韩华47;申请内存并初始化
char *p3 = new char[10]; //数组
Stu *p4 = new Stu; //Stu为已定义的类
delete p1;
delete [] p2;(释放整个数组空间)
动态申请的内存没有名字,也不知道其地址,但它确实是存在的,通过指针来访问。
如 *p1 = 100; 这和普通变量一样使用,如果要断电保存,那就要写文件或者数据库了,可以查找相关系统函数。


七.在c语言程序设计中有些动态数据对象需要申请动态内存

内存是有限的, 你的数据对象占用了内存空间, 则内存就少了一块, 所以用完了要释放才能分配给其他的数据对象. c发唬篡舅诂矫磋蝎单莽语言用此机制实现了内存的动态分配管理.

比如动态链表, 每个结点都要malloc出来, 使用前你不确定链表到底需要多大, 那么就用到一个节点malloc出来一个. 删除的话再free掉供系统分配给其他对象.


八.C/C++关于动态空间申请问题:

# include<stdio.h>
# include<string.h>
typedef struct
{
int* elem;
int length;
int listsize;
}t,*SqList;

int InitList_Sq(SqList L)
{
//(int*)calloc(100,sizeof(int));
L->elem=(int*)malloc(100*sizeof(int)); //执行到这一步时提示错误,如下图
if(!L->elem)
return 0;
L->length=0;
L->listsize=100;
printf("%d\t%d\n&quo花骸羔缴薏剂割烯公楼t;,L->length,L->listsize);
return 1;
}
int main()
{
SqList i;
int g=0;
i=(SqList)malloc(sizeof(t));
g= InitList_Sq(i);
}
这是我修改后的测试代码


九.什么是c语言里面的动态存储分配函数啊?

所谓动态分配,就是需要的时候再分配,这是相对于静态分配而言的,静态分配就是一次分配完毕,不订攻斥纪俪慌筹苇船俩管你用多少。而动态分配则是按需分配。

c 动态申请数据存放在? 由美文导刊网(www.eorder.net.cn)收集整理,转载请注明出处!原文地址http://www.eorder.net.cn/pic48613/

文章评论
Copyright © 2006 - 2016 www.eorder.net.cn All Rights Reserved
美文导刊网 版权所有