题目内容

以下代码有何问题?#include #include #include int main(){ char *p; int i; p=(char *)malloc(sizeof(char)*20); strcpy(p,"welcome"); printf("\n"); free(p); for(i=6;i>=0;i--) putchar(*(p+i)); return 0;}

A. 没有问题
B. malloc语法错误
C. strcpy语法错误
D. putchar的时候那块空间已经被free了,这时候再访问该空间是非法的。

查看答案
更多问题

对于函数void * malloc(unsigned int size)而言,下面的说法中正确的是

A. void *的含义是指该指针基类型未知,若将函数调用的返回值赋值给某个指针,必须做强制类型转换,将返回的指针值转换为所需的类型。
B. void *的含义是指函数调用的返回值为指针类型,该指针为空指针,其值为NULL。
C. void *的含义是指该函数没有返回值
D. 以上说法都不对

若有定义int a[5]={1,3,5,7,9}; 则不能对a数组元素正确引用的是( )。

A. a[3]
B. *(a+1)
C. a[5]
D. a[6-3]

若有定义int a[]={11,22,33,44,55},*p=a;,则下列不表示数组元素a[2]的值的是 ( )

A. *(p+2)
B. *&a[2]
C. *(a+2)
D. *p+2

假设有下面定义语句:float a[10];float *p=a;则p++的效果是p的值在原来基础上增加( )

A. sizeof(p)
B. 1
C. sizeof(float)
D. sizeof(a)

答案查题题库