(4)void Func ( char str[100]) { …… ; } 请计算 sizeof( str ) =
(5)void *p = malloc( 100 ); 请计算sizeof ( p ) =
【标准答案】(4)4、(5)4
4、用变量a给出下面的定义
e) 一个有10个指针的数组,该指针是指向一个整型数的; int* a[10];
f) 一个指向有10个整型数数组的指针 ;int (*a)[10]
g) 一个指向函数的指针,该函数有一个整型参数并返 回一个整型数; int (*func)(int);
h) 一个有10个指针的数组,该指针指向一个函数,该 函数有一个整型参数并返回一个整型数; (int (*func)(int)) a[10]; int (*a[10])(int);
【标准答案】e)int * a[10]; f)int (*a)[10] g)int (*a)(int); h) int (*a[10])(int)
5、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_____
【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52.当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20
7、请问以下代码有什么问题: char* s=“AAA”;(此种赋值方法“aaa”为只读)printf("%s",s);s[0]='B';printf("%s",s);有什么错?
【标准答案】"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。cosnt char* s="AAA";然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
8、 int (*s[10])(int) 表示的是什么啊
【标准答案】int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。首先是有10个元素的数组,每个元素是指针,每个指针又是指向int型参数int型返回值的函数。
10、void getmemory(char *p)
{ p=(char *) malloc(100);
strcpy(p,“hello world”);}
int main( ){ char *str=NULL; getmemory(str); printf(“%s/n”,str); free(str); return 0;}会出现什么问题?
【标准答案】程序崩溃,getmemory中的malloc 不能传递动态内存,main函数中str始终是NULL, free()对str操作很危险。在getmemory这个函数里分配的空间,在此函数执行完后就没有了,所以在main函数里面虽然调用了该函数,但空间已经不存在了,所以无法打印,free也就没意义了。直接写成int main( ){ char *str=NULL; str=(char *) malloc(100); printf(“%s/n”,str); free(str); return 0;}就好了。
11、 char szstr[10];strcpy(szstr,"0123456789");产生什么结果?为什么?
【标准答案】长度不一样,出现段错误。只分配了10个字符的空间,写入了11个字符(字符串末尾有\0),访问了未分配的非法空间,会出现段错误。
14、给定结构struct A{ char t; char k; unsigned short i; unsigned long m;};问sizeof(A) = ?
【标准答案】8,采用4字节为单位进行分配t分配4个占用1个,k刚好占用第二个,余下2个刚好放入short型I,Long占用4个字节总共4+4=8!它是按照此结构体里占最大空间的数据类型为单位分的,这里面int最大,占4字节,所以以4为单位,给t分配的时候就是4个字节,但它只占了1字节,下来k也是1字节,所以也装进这个空间。
15、 struct name1{char str;short x;int num;};求sizeof(name1)?
【标准答案】分配4字节为一个单位
char 占用一个余下3个
short占用2个余下1个放不下int
int 单独开辟4字节
刚好8个
16、