C语言
文章平均质量分 59
zy20150613
这个作者很懒,什么都没留下…
展开
-
C当中数组的相关运算
数组中的相关运算:sizeof()求得是变量或者空间开辟空间的大小,而strlen()函数参数接收的必须是一个有效地址#include #include int main(){ //一维数组 int a[] = {1,2,3,4}; printf("%p\n", a); //输出数组a的地址,即数组首元素的地址 printf("%p\n", a+1); //数组下一个元素原创 2017-04-15 12:26:09 · 487 阅读 · 0 评论 -
常见C++笔试面试题总结(五)
21. New delete 与mallocfree 的联系与区别?答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.(可以看看:显式调用构造函数和析构函数)22. #define DOUBLE(x)...原创 2019-02-27 10:40:04 · 301 阅读 · 0 评论 -
常见C++笔试面试总结(四)
11. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。答案:/*编写strcpy函数(10分)已知strcpy函数的原型是char *strcpy(char *strDest, const c...原创 2019-02-27 10:36:39 · 144 阅读 · 0 评论 -
常见C++笔试面试题总结(三)
1.求下面函数的返回值( 微软)int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx; }假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。(华为面...原创 2019-02-27 10:33:34 · 382 阅读 · 0 评论 -
链表面试题之链表分割
题目描述:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。//分割链表,分成大于和小于x的两部分,且数据顺序不能改变// 输入:// 4 6 8 6 3 5 3 9 1 5 , x = 5// 输出:// 4 ...原创 2019-02-26 17:16:40 · 519 阅读 · 0 评论 -
链表面试题之合并两个有序单链表
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 解析:首先先取得小的结点作为头结点;然后拿到L1, L2中较小的结点进行尾插,直到其中一个链表遍历完并且插入完结束。最后将未...原创 2019-02-26 17:05:22 · 254 阅读 · 0 评论 -
链表面试题之输出链表中倒数第K个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。 解析:一种变形的快慢指针。首先将快指针向后移动K步,慢指针在head处不动。然后让快慢指针同时移动,直到快指针移动到最后一个结点,则慢指针所在位置就是倒数第K个结点。ListNode* FindKthToTail(ListNode* head, unsigned int k){ if (head == NULL ||...原创 2019-02-26 17:01:15 · 233 阅读 · 0 评论 -
链表面试题之给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点
题目:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, a...原创 2019-02-26 16:57:58 · 701 阅读 · 0 评论 -
链表面试题之单链表逆置
题目:反转一个单链表链表结构如下:struct ListNode{ int val; struct ListNode *next;};方法一:算法思想:用三个指针 n1 , n2 , n3 起初,n1指向头head,n2指向第二个结点,n3指向第三个结点;先让n1的next指向空,循环判断n2是否为空,让n2头插到n1后面(n2->next = n1),再挪动指...原创 2019-02-26 16:55:32 · 300 阅读 · 0 评论 -
理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
1.指针数组 指针数组强调的是数组,并且数组元素是指针类型例:int *arr[5]//arr是一个数组,数组元素是指针(int*)2.数组指针 数组指针强调的是指针,并且这个指针指向一个数组,即指针变量存放的是数组地址例:int (*arr)[5]//arr是一个指针,并且指向一个含有5个整型元素的数组3.函数指针 函数指针强调指针,并且这个指针指向原创 2017-06-01 15:53:35 · 221 阅读 · 0 评论 -
C语言中宏和函数的不同之处
宏和函数的不同之处原创 2017-04-26 10:41:21 · 287 阅读 · 0 评论 -
一个C语言源程序是如何到一个可执行程序的
当我们写好一个C程序的时候,仅仅是一个.c的源程序,而我们运行完成之后就是一个.exe的可执行程序了,在这个过程中都发生了什么呢?(1).c的源程序会经过翻译环境和运行环境两个大的步骤。其中,翻译环境包含编译和链接。(2)而编译环境还包括三个阶段,分别是预处理阶段,编译阶段,汇编阶段a.预处理阶段生成*.i文件 在linux系统下可以使用gcc te原创 2017-04-25 09:36:28 · 13096 阅读 · 0 评论 -
C语言中可变参数列表的剖析
C语言中的可变参数是一个比较有意思的实现,通过将函数实现为可变参数的形式,可以使得函数可以接收1个以上的任意多个参数(不固定)。 可变参数列表是通过宏来实现的,这些宏定义于stdarg.h里面,也是标准库一一部分,头文件里声明一个类型va_list和三个宏va_start va_arg va_end我们一般是声明一个类型为va_list的变量,再配合这三个宏来使用。原创 2017-05-11 11:27:21 · 445 阅读 · 0 评论 -
strcpy和memcpy有什么区别?
strcpy和memcpy有什么区别?strcpy是如何设计的,memcpy呢?strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。(保证dest可以容纳src。)memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。strcpy的原型是:char* strcpy(char* dest...原创 2019-02-27 10:41:13 · 213 阅读 · 0 评论