以前的记录都在电子笔记里,倒不如拿出来,有错的地方和大家交流。

1.指针操作:

如下例,设a内存地址为OX00
int a =10;
int *p = &a;
*a 编译错误
a表示10
*p表示10
p表示OX00
&p表示0X04

2.hex转换成ASCII

 #include <stdio.h>
 int main(int argc, const char *argv[])
 {
  ];
  sprintf(hexBuff, "%x%x",0x32,0x4d);
  printf("%s\n",hexBuff);
  printf(]);
  printf(]);
  printf(]);
  printf(]);
  printf(]);
  ;
 }

3.有一个字符串,每7为表示一个ASCII,将字符串转换成对应的ASCII码,如果连续出现7个0表示结束。

 #include <stdio.h>
 #include <string.h>
 int fun(char * str){
  ];
  ;
  while( * str){
    tmp[index++] = * str++;
    ){
     printf("%s\n", tmp);
     ) == ){
      printf("game over....\n");
     }
     memset(tmp,,);
     index = ;
    }
  }
  ;
 }
 int main(int argc, const char *argv[])
 {
  ";
  fun(str);
  ;
 }
4.将字符串中最长的那个相同的字符串提取出来。

 

 int fun(char * str){
  char tmp;
  ];
  ;
  ;
  while( * str){
   tmp = *str++;
   array[count] = tmp;
   if(*str == tmp){
    array[++count] = *str;
   }else {
    count = ;
    printf("%s\n", array);
    memset(array, , );
    tmp = ;
   }
  }
  ;
 }
5.有双向循环链表结点定义为:
struct node
{     int data;
        struct node *front,*next;
};
有两个双向循环链表 A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中 data 值相同的结点删除 
 BOOL DeteleNode(Node *pHeader, DataType Value)
 {
  if (pHeader == NULL) return;
  BOOL bRet = FALSE;
  Node *pNode = pHead;
  while (pNode != NULL)
  {
   if (pNode->data == Value)
   {
    if (pNode->front == NULL)
    {
     pHeader = pNode->next;
     pHeader->front = NULL;
    }
    else
    {
     if (pNode->next != NULL)
     {
      pNode->next->front = pNode->front;
     }
     pNode->front->next = pNode->next;
    }
    Node *pNextNode = pNode->next;
    delete pNode;
    pNode = pNextNode;
    bRet = TRUE;
    //不要 break 或 return, 删除所有
   }
   else
   {
    pNode = pNode->next;
   }
  }
  return bRet;
 }

 void DE(Node *pHeadA, Node *pHeadB)
 {
  if (pHeadA == NULL || pHeadB == NULL)
  {
   return;
  }
  Node *pNode = pHeadA;
  while (pNode != NULL)
  {
   if (DeteleNode(pHeadB, pNode->data))                                      //在B中将A中的data删除掉
   {
    if (pNode->front == NULL)                                               //同时删除A中的data
    {
     pHeadA = pNode->next;
     pHeadA->front = NULL;
    }
    else
    {
     pNode->front->next = pNode->next;
     if (pNode->next != NULL)
     {
      pNode->next->front = pNode->front;
     }
    }
    Node *pNextNode = pNode->next;
    delete pNode;
    pNode = pNextNode;
   }
   else
   {
    pNode = pNode->next;
   }
  }
 }

6.不定参数函数的实现

 int sum(int num, ...)
 {
 ;
 ;
 while(num--)
 {
    printf("%d\n", num);
    ret += *p++;
 }
 return ret;
 }
 int main(int argc, char* argv[])
 {
 printf(, , , ));
 ;
 }
所谓不定长参数,就是函数的形参数量不定,类型也可能是不定的。我们把像上面的函数sum中如“int num”这样的参数叫做“有名参数”,后面用“…”代表的都是“匿名参数”,有名参数是可以在函数中通过变量名直接访问的,匿名函数则无法通过变量名直接访问,只能是通过相对有名参数的位置(地址)来访问了。
关键在于:
(1)匿名参数的个数和类型必须通过有名参数传递给被调函数
如printf中的第一个参数“const char *fomat”,在format中不仅告诉了printf参数的个数,还必须指定正确的类型,二者缺一不可。
(2)被调函数本身有办法直接或间接定位参数的个数和类型
即描述参数个数和类型的参数的位置应该是固定的,函数有办法定位它们,而不是如匿名参数那般不确定的。像C语言的标准调用方式,即从右至左压栈且调用方清理栈的方式是比较合适的,尤其是前者,如果在第一个参数中指定各参数的个数和格式,则根据栈的规律可以知道,返回地址上方即是第一个参数(即ebp+8),以后的匿名参数则可依次确定了。
 
7.sizeof和strlen的区别
 int main(int argc, const char *argv[])
 {
  char *p = "abc";
  char p1[] = "wan";
  printf("p = %u p1 = %u\n", strlen(p), strlen(p1));
  printf("sizeof(int) = %d\n", sizeof(int));
  ;
 }

答案:p = 3, p1 = 3;  sizeof(int) = 4.

C语言面试题总结(一)的更多相关文章

  1. C语言面试题汇总之一

    C语言面试题汇总之一 1.static有什么用途?(请至少说明两种) l 限制变量的作用域: 设置变量的存储域. 2.引用和指针有什么区别? 引用必须被初始化,指针不必: 引用初始化以后不能被改变,指 ...

  2. 12个有趣的C语言面试题

    摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int ma ...

  3. c语言面试题之sizeof

    c语言面试题之sizeof */--> c语言面试题之sizeof Table of Contents 1. sizeof 1 sizeof sizeof是c语言中判断数据类型或者表达式的长度符 ...

  4. C语言面试题(嵌入式开发方向,附答案及点评)

    整理自C语言面试题(嵌入式开发方向,附答案及点评) 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SEC ...

  5. 转 C语言面试题大汇总

    转 C语言面试题大汇总,个人觉得还是比较全地!!! \主 题:   C语言面试题大汇总,个人觉得还是比较全地!!!  作 者:   free131 (白日?做梦!)   信 誉 值:   100    ...

  6. 12个有趣的c语言面试题&nbsp;

    1.gets()函数 问:请找出下面代码里的问题: #include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets ...

  7. 嵌入式开发—C语言面试题

    嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929   1. 用预处理指令#define 声明一个常数,用 ...

  8. C语言面试题(一)

       裸辞后,本周开始求职之旅.令人厌烦的是,大多数公司都会通知你去面试,然后拿出一纸试题,开始作答,最后笔试成绩作为重要的参考来决定是否录取你.对于大学四年挂了三年科的我,习惯遇到问题令辟溪径,从不 ...

  9. 华为C语言笔试题集合

    ①华为笔试题搜集 1.static有什么用途?(请至少说明两种)     1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.     2) 在模块内(但在函数体外),一个被声明为 ...

  10. C语言面试题大汇总

    static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7. 引用与指针有什么差别?1) 引用必须被初始化,指针不必.2) 引用初始化以后不能被改变,指针能够改变所指的对象. ...

随机推荐

  1. HDU.2503 a/b + c/d (分式化简)

    a/b + c/d Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. Cydia Substrate based DexDumper's weakness

    得益于Cydia Substrate框架,HOOK Native函数变得简单,也给脱壳带来方便. 像ijiami免费版,360,classes.dex被加密到so文件并运行时释放到内存,因此针对相关函 ...

  3. 洛谷P4198 楼房重建 (分块)

    洛谷P4198 楼房重建 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题, ...

  4. Connections between cities LCA

    Problem Description After World War X, a lot of cities have been seriously damaged, and we need to r ...

  5. bzoj 1111 [POI2007]四进制的天平Wag 数位Dp

    1111: [POI2007]四进制的天平Wag Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 302  Solved: 201[Submit][St ...

  6. 使用VS2010编译MongoDB C++驱动详解

    最近为了解决IM消息记录的高速度写入.多文档类型支持的需求,决定使用MongoDB来解决. 考虑到MongoDB对VS版本要求较高,与我现有的VS版本不兼容,在leveldb.ssdb.redis.h ...

  7. 如何更有效使用 Rational AppScan 扫描大型网站,第 2 部分: 案例分析

    使用 AppScan 进行扫描 针对大型网站的扫描,我们按照戴明环 PDCA 的方法论来进行规划和讨论,建议 AppScan 使用步骤:计划(Plan).执行(Do).检查(check).分析(Ana ...

  8. java入门实现转换

    设计思想 首先不用多说就是建立最基础的java创建,然后抛出一个异常处理来替我们检测用户的输入,这一点十分重要.然后就要进行输入工作,不必多说,网上的教程有一个Scanner的输入方法,我们引入一下. ...

  9. 自己做的jquery的autocomplete的一个例子

    转载自:http://dada-fangfang.iteye.com/blog/695464 首先下载jquery.js和jquery.autocomplete.js 注意:jquery.js 要放在 ...

  10. [洛谷P2610] [ZJOI2012]旅游

    洛谷题目链接:[ZJOI2012]旅游 题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个 ...