
面试
SuGuolin
这个作者很懒,什么都没留下…
展开
-
阿里平头哥半导体有限公司 (技术面 复试题目)
阿里平头哥半导体有限公司(技术面 复试题目)指针函数和函数指针的区别?指针函数:是指带指针的函数,其本质上是一个函数,函数返回值是某一类型的指针。 函数指针:是指向函数的指针变量,该指针可指向函数的入口地址(即函数名)。什么是回调函数?回调函数就是一个通过函数指针调用的函数,将某一个函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,即称之为回调函...原创 2020-04-24 10:22:10 · 2460 阅读 · 0 评论 -
C/C++的面试题
1.new、delete、malloc、free关系 它们都可用于申请动态内存和释放内存。 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。 对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。 由于malloc/free转载 2016-12-08 14:01:26 · 386 阅读 · 0 评论 -
不使用sizeof,如何求出数据类型的字节数
32位机器下,int型变量占用的内存空间大小为4个字节,如果不用sizeof的话可以通过以下2种方式:1,定义宏 #include #define MySizeof(Value) (char*)(&Value+1)-(char *)&Value int main() { int i; double f; double a[4]; double *q; print原创 2017-02-27 23:46:05 · 1823 阅读 · 2 评论 -
断言ASSERT() 是什么
ASSERT()一般被称为断言,它是一个调试程序时经常使用的宏。它定义在头文件中,通常用于判断程序中是否出现了非法的数据,在程序运行时它计算括号内的表达式的值。在此强调的一点,ASSERT()捕获的是非法情况,而非错误情况,错误情况是必然存在的,并且一定需要作出相应的处理,而非法情况则不是,它可能只是漏洞而已。其用法如下: ASSERT(n != 0); k = 10/n;原创 2017-02-20 23:39:44 · 1134 阅读 · 0 评论 -
如何用sizeof判断数组中有多少个元素
只需要用整个数组的sizeof去除以一个元素的sizeof即可求出数组中元素的个数,以数组名array为例,代码为 #define Count (sizeof(array[0]))或者#define Count(sizeof(array)、sizeof(数组的类型,如int,double等))。程序示例如下:#include#define Count (sizeof(array)/si原创 2017-03-01 23:27:46 · 4321 阅读 · 0 评论 -
枚举和define有什么区别
两者只有恨小的区别,在C语言中,枚举为整型,枚举常量为int型,因此它们都可以和其他整型类别混用而不会出错,而且枚举优点众多;能自动赋值;调试器在检验枚举变量时,可以显示符号值;服从数据块作用域规则。具体而言,两者的区别表现在以下几个方面:(1)枚举常量是实体中的一种,而宏定义不是实体。(2)枚举常量属于常量,但宏定义不是常量。 (3)枚举量具有类型,但宏没有类型,枚举变量具有与普通变原创 2017-03-01 23:46:24 · 2161 阅读 · 1 评论 -
枚举变量的值如何计算
以如下程序实例进行分析。 #include int main() { enum{a, b=5, c,d=5,e); printf("%d%d%d%d%d\n",a,b,c,de); return 0; } //程序输出 0 5 6 4 5枚举量的值默认为前一个变量值加1,而第一个如果没有赋值,则默认值为0。从这个例子可以看出枚举量值是可以重复的。原创 2017-02-21 23:24:56 · 1466 阅读 · 0 评论 -
char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
两者不相等,是因为str1 和 str2 都是字符数组,每个都有其自己的存储区,它们的值则是各存储区的首地址。但有些情况却不一样,程序如下:#include int main(void){ const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; c原创 2017-02-22 22:59:00 · 4872 阅读 · 1 评论 -
C语言中,整型变量x小于0,是否可知x*2也小于0
假定计算机中32位的,用2的补码表示整数,若x程序如下: #include int main() { int x= -4292967295; if(2*x<0) printf("2*x<0\n"); else printf("2*x>0\n"); return 0; }程序输出 2*x>0原创 2017-02-25 23:35:45 · 1599 阅读 · 0 评论