代码如下:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define N 99
int main(int argc, char* argv[])
{
int n,i,j;char (*p)[N],a[N];
printf("How many words do you wanna input:");
scanf("%d",&n);
p=(char (*)[N])malloc(n*sizeof(char[N]));
if(*p=NULL){printf("out of memory");getch();}
printf("input your words:");
for(i=0;i<n;i++) scanf("%c",p[i]);
for(i=0;i<=n;i++) gets(p[i]);
for(i=0;i<=n-1;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(p[i],p[j])>0)
strcpy(a,p[i]);
strcpy(p[j],p[i]);
strcpy(p[j],a);
}
for(i=0;i<=n;i++)puts(p[i]);
free(p);
getch();
return 0;
}
请问VC和malloc的问题
1、8字节。malloc申请的内存是void指针类型的,所以在申请后,前面要强制转换为所需要的类型,如你的例子中的(u32*),所以malloc(8)申请的是8字节的。2、第二句是不会报错的。因为你第一句已经为mybuf申请了内存,mybuf已经是一个含有8个字节的u32*指针类型了。指针跟数组的运用基本上是一样的,...
C语言里,什么时候用数组什么时候用指针和动态内存(malloc\/calloc)?
但是用动态内存容易出bug,主要是忘记忘记释放内存(内存溢出)和野指针(指针指向的地址不是malloc分配的内存地址). 另外,频繁动态分配内存容易导致内存碎片. 这些问题在嵌入式系统中都是致命的.所以要格外小心.建议明确知道大小的情况下,并且size不大的情况下,使用数组.其他情况下使用动态内存.并且记得在使用...
C语言中,怎么使用malloc函数为数组指针分配空间 比如要为char *p...
指针数组是指所定义数组的每个数组元素都是一个相应数据类型的指针,开设空间的操作可以应用循环语句进行,例如:对于char *p[10]; 可以应用 for(i=0;i<10;i++)p[i]=(char *)malloc(sizeof(char)*N); \/\/为每个指针申请开设N字符的存储空间 开设后,对于p的使用与二维数组的使用格式类似,...
C语言 malloc()函数 分配内存空间尺寸的问题
malloc是给指针变量分配内存空间的函数命令 正确使用:分配的空间要能保证容下你想存储的数据,不要和机器逗着玩(分配0空间,或少于自己实际需要的空间),如你上面的操作,表面上你程序运行没有问题,可实际上你占用了别人的地盘,只是当前你很幸运没有使程序出现问题,但不保证一定不出问题!!不再使...
C结构体指针 malloc函数问题 麻烦解释哪里错了,越细致越好。
数组占用的内存位置以及中某个元素的地址是不能随意改变的;故不能重新为数组分配内存地址,更不能对数组某一个元素的地址赋值。因此,for循环的循环体中,&tarry[i]属于不可修改的左值,不能被赋值。当你定义struct teacher tarry[3]之后,系统已经静态为tarry数组分配了内存,不能通过malloc重置。
简单问题,关于c语言指针申请空间
不知道是不是楼主没有把这部分代码打出来,但就这段代码来看,你的指针数组*s[]好像还没有定义就先使用了。在函数的申明部分(即定义变量的部分),要加上一句定义语句: struct point *s[30];而且这一句,struct point *s[i] = (struct point *)malloc(sizeof(struct point));在申请空间时,...
关于malloc的一些问题,到底怎么回事!帮忙解释清楚吧
p是指针,指针是一种数据类型,不是数组,数组是一种数据结构,数组可以看成是存储于一个“连续存储空间”中的相同数据类型的数据元素的集合 在这段连续存储空间中,p可以指向其中任意一个元素,也就是p的值可以是其中任意一个元素的地址,假设A是一个正整数,只要(p+A)和(p-A)还在这段存储空间中...
c语言,字符串部分,这三题,求详解。。。
指针通常和int类型占的字节数相同(2或4)所以通过malloc申请了两个指针的空间,换句话说,s指针数组,包含两个元素。s表示第一个字符指针,所以B是正确的,可以指向常量字符串 A 是错误的 C是错误的,**s表示字符 D右边的表达式本来就是错误的 25. language也是指针数组,包含5个字符指针,每个指针...
C\/C++内存申请和释放(一)
在C语言中,动态内存申请主要通过malloc函数实现。其基本用法包括动态申请数组和动态申请数组指针。例如,当我们需要创建一个动态数组时,可以使用`int *array = (int*)malloc(n * sizeof(int));`来为指定长度的整数分配内存。除了malloc,还有其他内存申请方式。calloc函数可以同时分配内存并进行初始化,...
用C语言分配开辟内存问题
针对你的问题补充我继续回答:你用new或malloc申请内存后,系统会为你分配在堆区的内存,系统会标记内存已经被占用了,你在程序中不释放,那么在程序运行期间这些内存一直都被系统标记为只读的,其他的程序不能使用,那么这就叫做内存泄露。你的程序运行结束了,还保留着,直到电脑重启了,内存初始化了,...