大华C/C++面试题目解析
来源:互联网 发布:软件项目ppt 编辑:程序博客网 时间:2024/04/29 23:31
1..写一个“标准宏”,输入两个参数并返回最小的那个。
解析:这个题目很简单:#define MIN(a,b) (b<a?b:a) 这里容易犯的错误是遗漏掉了括号,这样预编译的时候,没编入括号,会导致一些很难发现的问题。
2. .h头文件中#ifndef/#define/#endif的作用___
解析:这个很简单,为了防止头文件重复包含编译,,vc里面的#pragma once也有相同作用,不过要编写跨平台程序,还是用前者比较好
3.请写出下面代码在32位平台上的结果
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char a[30];
char *b=(char *)malloc(20*sizeof(char));
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(b));
printf("%d\n",sizeof(a[3]));
printf("%d\n",sizeof(b+3));
printf("%d\n",sizeof(*(b+4)));
return 0;
}
运行结果为————
解析:1. 在32位平台上,char占1字节,short占2字节,int型占4个字节,long型占4个字节,指针占4个字节
在64位平台上,char占1字节,short占2字节,int型占4个字节,long型占8个字节,指针占8个字节,
2. 数组与指针是两个不同的概念,数组要么在静态存储区域被创建,要么在栈上被创建,数组名对应着(而不是指向)
一片内存,其地址与容量在整个生存周期内都不改变,但内容改变。我们经常使用指针来操作动态内存。指针远比数组灵活但也危险。
在计算容量的时候,sizeof(a)是指计算数组名为a的数组所占的内存,如果char *p=a,再sizeof(p),这个时候计算的就是p这个指针所
对应的字节数了,c/C++无法知道指针的数量,除非在动态分配内存的时候记住它。
同时要注意:当数组a作为参数传递的时候,自动退化为同类型指针, 如果这个时候在函数体里面计算此指针的字节数,
仍然会得到指针所占的内存字节数。
而当一个数组名进行+,-操作的时候,结果应该也会退化为指针。
剩下的三个应该很好判断。
还查到vs2010默认是编译的WIN32程序,所以,类型所分配的内存大小应该是按1来的。
4,
- 大华C/C++面试题目解析
- c语言面试题目
- C面试题目
- C面试题目2
- C面试题目3
- C/C++面试题目
- C面试题目
- C语言面试题目
- C面试题目3
- C/C++面试题目
- 嵌入式C面试题目
- C语言面试题目
- C面试题目
- C面试题目
- c语言面试题目
- 大华一道C笔试题
- C/C++面试题目集锦
- C/C++ 笔试、面试题目
- ubuntu 下用nfs挂载不上问题
- Java Class编译时使用的JDK版本查看
- 广州百田笔试+面试经历
- 正则表达式30分钟入门教程
- 关于C++中的多态
- 大华C/C++面试题目解析
- AP - 通过付款管理器批量付款报错
- CentOS的安装
- 如何使用SVG制作箭头
- 2014-03-11
- 汇编和C语言的参数传递
- 对一个类进行主动引用的四种情景(初始化)
- 批量更新价格
- 如何查看计算机端口使用情况