华为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”
相关文档:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include ".\sqlite3_lib\sqlite3.h"
static int _callback_exec(void * notused,int argc, char ** argv, char ** aszColName)
{
int i;
for ( i=0; i<argc; i++ )
......
Delphi 与 C/C++ 数据类型对照表
Delphi数据类型C/C++
ShorInt
8位有符号整数
char
Byte
8位无符号整数
BYTE,unsigned short
SmallInt
16位有符号整数
short
Word
16位无符号整数
unsigned short
Integer,LongInt
32位有符号整数
int,long
Cardinal,LongWord/DWORD
32位无符号整数
unsigned long
Int6 ......
哈哈!有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。
一家之言,欢迎拍砖哈。
1、可以考虑先学习C.
大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望 ......
C6000系列DSP的硬件资源为高性能提高了必要条件,TI公司也配合C6000推出了世界上第一个效率可达70%~80%的汇编语言级C编译器,它产生的代码平均效率是以往DSP编译器的3倍,如何理解并充分利用这些有利资源,使代码达到所期望的性能,是本章的主题。
① 第一阶段:属于纯C阶段,此时不需要 ......