以下程序有什么问题?#include #include #include int main(){ char *p; int i; p=(char *)malloc(sizeof(char)*5); strcpy(p,"welcome"); for(i=6;i>=0;i--) putchar(*(p+i)); printf("\n"); free(p);}
A. 没有问题
B. 动态申请的空间不够存储welcome这个字符串。
C. strcpy这个函数参数错误
D. free错误
查看答案
下面程序的功能是通过动态分配内存函数malloc产生动态数组,程序的某次运行结果如下:Enter array size:8↙array[0]=0array[1]=10array[2]=20array[3]=30array[4]=40array[5]=50array[6]=60array[7]=70按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include #include int main(){ int *p,n,i; printf("Enter array size:"); scanf("%d",&n); __________________; for(i=0;i
A. 第8行: p=(int)malloc(n*sizeof(int *));第12行:*(p+i)=i*10第16行:printf("array[i]=%d\n",i,*(p+i))
B. 第8行: p=(int *)malloc(n*sizeof(int));第12行:*p+i=i*10第16行:printf("array[i]=%d\n",i,*p+i)
C. 第8行: p=(int *)(n*malloc(sizeof(int*)))第12行:*p+i=i*10第16行:printf("array[%d]=%d\n",i,*(p+i))
D. 第8行: p=(int *)malloc(n*sizeof(int));第12行: *(p+i)=i*10第16行: printf("array[%d]=%d\n",i,*(p+i))
申请一个具有n个int型元素的一维动态数组,可以使用下面的哪条语句?
A. p = (int *) malloc(n * sizeof(int));
B. p = (int *) malloc(n, sizeof(int));
C. int p[n];
下列说法错误的是
A. 用return语句既可以从函数返回调用动态内存分配函数动态申请的内存的地址,也可以从函数返回在函数内定义的局部变量的地址。
B. 对于用动态内存分配函数申请的内存,如果在使用结束后不释放的话,会发生内存泄漏。
C. 对于用动态内存分配函数申请的内存,如果在释放以后还继续使用的话,那么会产生非法内存访问的错误。
D. 计算动态分配内存的字节数的时候,应该始终使用sizeof运算符,因为某些类型在不同的系统下所占内存空间的字节数是不同的。
下面说法错误的是
A. 如果希望在程序的运行期间改变数组的长度,则需要使用动态内存分配函数实现动态数组。
B. 动态内存分配是指在程序运行时为变量分配内存的一种方法。
C. 调用malloc函数后将会返回一个指针类型的地址,该值可以直接赋值给特定的指针变量,无需强制类型转换。
D. 内存泄漏问题通常需要运行相当一段时间后才能发现。