陕西购物商城网站建设,镇江网站建设zjmfkj,望都网站建设,公众号制作编辑器准备复习一下C语言#xff0c;刷一些和面试相关的问题。 请填写 bool, float, 指针变量 与 “零值”比较的if语句 A.Bool flag 与 “零值”比较的if语句 1为true 0为false 分析 这里的flag 是布尔类型的变量 标准… 准备复习一下C语言刷一些和面试相关的问题。 请填写 bool, float, 指针变量 与 “零值”比较的if语句 A.Bool flag 与 “零值”比较的if语句 1为true 0为false 分析 这里的flag 是布尔类型的变量 标准的写法是 if(flag) 或者 if(!flag) If(flag true)也能实现效果但是写法赘余不规范 B.请写出float x 与 “零值”比较的if语句 标准的写法 Const float EPSINON 0.00001; If((x-EPSINON) xEPSINON) 注不可用将浮点数用或者与数字进行比较应该转换成或 如果你检查是否严格等于0可以if(x0.0f)但是由于精度问题不推荐 C.请写出char *p与零值比较的if语句 标准答案 if( p NULL) if(P!NULL) 这里是判断指针是否指向空 2.以下为Linux下的32为C程序请计算sizeof的值
Char str[] “Hello”;
Char *p str;
Int n 10;
请计算 sizeof(str) sizeof(p) sizeof(n)
标准答案6 五个字符空自符, 4 , 4
Void Func (char str[100]){
....;
}
请计算 sizeof(str) 4
在C语言中当你将数组作为函数参数传递时它会被当作指针来处理。因此在函数Func内部sizeof(str)并不会返回整个数组的大小即100而是返回指针的大小。
指针的大小是4字节对于32位系统或8字节对于64位系统。
Void *p malloc(100);
请计算sizeof(p) 4
当你使用malloc函数分配内存时你得到的是一个指向所分配内存块的指针。在C语言中指针的大小通常不依赖于它所指向的内存块的大小。 3.用变量a 给出下面的定义e) 一个有10个指针的数组该指针是指向一个整型数的; int *a[10] 整数指针的数组f) 一个指向有10个整型数数组的指针; int (*a)[10] 指向整数数组的指针g) 一个指向函数的指针该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组该指针指向一个函数该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10] g)int (*a)(int); h) int (*a[10])(int) 4.设有以下说明和定义typedef u nion {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 5.以下代码的问题
int main(){char a;char *stra;strcpy(str,hello);printf(str);return 0;}
问题
缓冲区溢出char a; 只分配了一个字符的空间但是 strcpy(str, hello); 试图将五个字符加上一个空字符 \0复制到这块内存。这会导致超出分配的内存范围覆盖相邻的内存区域。 7.请问以下代码有什么问题char* sAAA;printf(%s,s);s[0]B;printf(%s,s);有什么错【标准答案】AAA 是字符串常量。s是指针指向这个字符串常量所以声明s的时候就有问题。cosnt char* sAAA;然后又因为是常量所以对是s[0] 的赋值操作是不合法的。 8.int (*s[10])(int) 表示的是什么啊【标准答案】int (*s[10])(int) 函数指针数组每个指针指向一个int func(intp aram) 的函数。 9.c和c 中的struct有什么不同【标准答案】c和c 中struct的主要区别是c中的struct不可以含有成员函数而c 中的struct可以。c 中struct和class的主要区别在于默认的存取权限不同struct默认为public 而class默认为private 10、void getmemory(char *p){p(char *) malloc(100);strcpy(p,“hello world”);}int main( ){char *strNULL;getmemory(str);printf(“%s/n”,str);free(str);return 0;} 会出现什么问题【标准答案】程序崩溃getmemory中的malloc 不能返回动态内存free 对str操作很危险。