您的位置:首页 > 编程语言 > C语言/C++

C语言中 各种指针定义到对比 联想2014秋笔试题目

2014-10-12 21:01 302 查看
今天在联想笔试遇到一个题目,是各种指针定义到对比,比较全面,记录一下。

1.  int a;   
整形变量;

2.  int *a;
指向整形变量到指针;

3.  int **a;
指向一个    指向整形变量的指针  的指针;

4.  int *a[10]
指针数组,a array of pointers
 元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*

5.  int (*a)[10]          数组指针,a pointer to an array.              元素表示:(*a)[i]  

6.  int (*f)(int x)        函数指针,指向函数到指针。

7.  int * f(int x)         指针函数,返回值是指针到函数。

2.C++ 调用 C语言到函数时为何加上 extern c?

  extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。

     这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。

3. 队列与堆栈到区别联系?

  队列只能在队头做删除操作,在队尾做插入操作.

  栈只能在栈顶做插入和删除操作,栈就是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来之后才能出来。

  堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。
  堆是指程序运行是申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。}栈是先进后出的,但是于堆而言却没有这个特性,两者都是存放临时数据的地方。
对于堆,我们可以随心所欲的进行增加变量和删除变量,不要遵循什么次序,只要你喜欢。

4. sizeof 与 strlen 到用法区别。
char a[200] = {0,1,2,3,4,5,6,7,8,9};
sizeof(a) = 200;  strlen=10;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  note