以下程序输出结果是( )#include void fun(char s[]){printf("%d",sizeof(s));}int main(){char s[100];printf("%d ",sizeof(s));fun(s);return 0;}
A. 100 4
B. 100 100
C. 4 4
D. 4 100
查看答案
若有定义:int x[10], *p=x;,则(p+1)和*(p+2)分别表示的是( )。
A. 数组元素x[1]的地址和数组元素x[2]的值
B. 数组元素x[0]的地址和数组元素x[1]的值
C. 数组元素x[1]的值和数组元素x[2]的地址
D. 数组元素x[0]的值和数组元素x[1]的地址
若有定义:int a[10],*p;则与p=a;等价的语句是( )。
A. p=&a[0];
B. p=a[0];
C. p=*a;
D. *p=&a;
以下代码有何问题?#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. 以上说法都不对