易截截图软件、单文件、免安装、纯绿色、仅160KB

华为C/C++笔试题2

  华为C/C++笔试题2 收藏
1. 某32位系统下, C++程序,请计算sizeof 的值
#include <stdio.h>
#include <malloc.h>
void Foo ( char str[100] )
{
    printf("sizeof(str)=%d \n", sizeof(str) );//此处使用char *str与char str[100]是一样的,char str[100]不指明大小(char str[])也行,因为编译器是把它当做 一个指针来处理的
}
main()
{
    char str[] = "www.ibegroup.com";
    char *p1 = str ;
    int n = 10;
    void *p2 = malloc( 100 );
    printf("sizeof(str)=%d \n", sizeof(str) );
    printf("sizeof(p1)=%d \n", sizeof(p1) );
    printf("sizeof(n)=%d \n", sizeof(n) );
    printf("sizeof(p2)=%d \n", sizeof(p2) );
    Foo(str);//数组名相当于一个指针,指针的大小为4,所以输出4而不是17,另外sizeof 是计算类型长度的,strlen 才是计算字符串长度的}
}
答:(1)17  (2)4   (3) 4   (4)4   (5)4
2.  回答下面的问题
(1) 头文件中的 ifndef/define/endif干什么用? 预处理
答:防止头文件被重复引用
(2) #include <filename.h> 和 #include "filename.h" 有什么区别?
答:
对于#include <filename.h> ,编译器从标准库路径开始搜索filename.h
对于#include "filename.h" ,编译器从用户的工作路径开始搜索filename.h
(3) 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
3.  回答下面的问题
(1)  请问运行Test 函数会有什么样的结果?
Void GetMemory(char **p, int num)
{
    *p = (char *)malloc(num);
}
void Test(void)
{
    char *str = NULL;
    GetMemory(&str, 100);
    strcpy(str, "hello");
    printf(str);
}
答:输出“hello”


相关文档:

简述C和C++程序员学习历程

哈哈!有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之   
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。
  一家之言,欢迎拍砖哈。
  1、可以考虑先学习C.
  大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望 ......

DSP C优化2

3.4理解编译器的反馈信息
    在编译C代码时,编译器在产生的.asm文件里向程序员反馈了许多信息,理解这些信息,按它的提示修改C代码,对尽快优化代码很有好处。只要用-k令编译器保留.asm文件,就可读到这些信息。
    对于C优化,重点就是循环,对于反馈信息,我们主要考察编译器对流水线 ......

c 语言可变参数函数例子

#include<stdio.h>
#include<stdarg.h>
#include<string.h>
void demo(char *msg,...)
{
va_list argp;
int arg_number=0;
char *para = msg;
va_start(argp,msg);
while(1){
if ( strcmp( para, "\0") != 0 ) {
arg_number++;
printf("parameter %d is: %s\n",arg_number,p ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号