26. 位段:指定结构体中成员变量所占的位数(以位的形式紧凑存储)

unsigned char/int aaa:1

这里只能是unsigned char/int类型

27. 指针数组:int *p[10]

数组指针:int (*p)[10]

指针数组:首先是个数组,该数组的每个元素都是指针;

数组指针:首先是个指针,这个指针指向一个数组;

28. 逗号运算符,逗号表达式,又称顺序求值运算符。

从左往右计算,整个表达式的值是最后一个表达式的值,逗号运算符的优先级最低。

表达式1,表达式2,表达式3……表达式n

从表达式1开始计算,直到表达式n,最终的值为表达式n的计算结果。

29. 二维数组a[m][n]表示有m行n列,每一行都是一个一维数组,每个一维数组里都有n个元素。

30. 在C语言中,当一维数组作为函数形参时,编译器总是把它解析成一个首元素首地址的指针。

31. 无法把一个指针变量本身传递给函数;

32. 函数指针:

char fun(int t){return ‘A’;}

int main()

{

char (*p)(int); /*定义一个指针,它指向一个形参为int形的,返回值为char形的函数*/

p=fun;

return 0;

}

33. 堆(heap):由malloc系列函数分配,空间大,没释放之前一直存在,直到程序结束或由free释放;

栈(堆栈)stack:保存局部变量,只在函数内部有效,函数结束时就自动释放,效率高,空间有限

全局区(静态区):保存自动全局变量和static变量(包括static全局和局部变量),在整个程序生命周期内都存在。

34. 断言assert

#include

void assert( int expression );//这是一个宏,而不是函数;

assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行;

可以用在函数开始处检验传入参数的合法性;

不能使用改变环境的语句或改变变量的语句;

每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败;

35. 内存分配和释放函数

void *malloc(size_t size)内存分配函数:向内存申请堆空间,申请成功则返回开始地址,失败返回NULL。返回的空间没有被清空。

void *realloc(void *ptr,size_t size)向内存归还旧空间,申请一片新空间,并且将旧空间中的数据复制到新空间中,但增加的空间不清零;

void *calloc(size_t nmenb,size_t size)向内存申请堆空间,给有nmenb个元素,每个元素大小为size的数组使用,并且清零;

void free(void *ptr)释放由以上三个函数申请的堆空间;

以上4个函数均在中

36. void *memset(void *s, int c, size_t n)把指针s所指向的空间里的n个字节设置为值c,在中;

37. 用malloc申请0字节的空间,返回的不是NULL指针,而是一个正常的地址,但此地址的空间无法使用。

38. 在free之后,建议把指针设置为NULL。

39. 不用全局和局部变量,不用库函数写my_strlen()函数

int my_strlen(char *p)

{

assert(p!=NULL);

return (*p!=’\0’)?(1+my_strlen(++p)):0;

}

40. 两个整数相除,结果在横轴上向0点的方向取整;

-3/-2=1

-2/-3=0

-3/2=-1

-2/3=0

3/2=1

2/3=0

41. 两个正数求余运算,运算结果的符号位和被求余的数符号相同。

求余运算只能在整数之间,不能是浮点数(编译会出错)。

-3%2=-1

3%(-2)=1

2%(-3)=2

(-2)%3=-2

42. 按位取反运算符~

~a=-a-1

~0=-1

~1=-2

43. 左移运算符<<

右边的空位补0

右移运算符>>

左边空位补符号位

44. 异或运算符^(a^b,a和b相同则结果为0,不同就为1):

1^1=0

1^0=1

0^1=1

0^0=0

///

与运算符&(a&b,a和b中有一个为0,结果就是0;只有a和b都是1,结果才为1):

1&1=1

1&0=0

0&1=0

0&0=0

///

或运算符|(a|b,a和b中有一个为1,结果就是1;两个都不是1,结果就是0):

1|1=1

1|0=1

0|1=1

0|0=0

以上三个运算符都是做位运算!

45. 一道笔试题

int a=1;

int b=2;

a=a^b;

b=a^b;

a=a^b;

运算结果刚好是a和b的值交换,如果a=b,则结果为0

46. 正数a|正数b=a+b

47. 对齐补齐

一个变量的地址一般是这个变量所占字节数的倍数

补齐:补到结构体中成员变量所占的最大字节数的倍数

48. 字符串操作系列函数

strlen(a)计算字符串长度,不包括’\0’

strcpy(a, “abcd”)将字符串复制到字符串数组a中(覆盖原有)

strcat(a, “abcd”)将字符串追加到a中

strcmp(a,”abcd”)比较a和”abcd”是否相等,返回0或非0

49. fun()表示该函数形参的类型和个数都不定,在调用它时,可以传递任何形参给它,只是传过去没用;

fun(void)表示该函数不允许传递任何形参给它,否则编译出错。

50. 可变形参

#include

int fun(int cnt, …)

{

va_list ls; //定义可变长参数表

va_start(ls, cnt); //用可变长参数表ls保存参数cnt之后的那些参数

va_arg(ls, int); //从参数表中取出一个int型的参数,并且将指针指向下//一个

va_end(ls); //释放可变长参数表

}

这些都是宏,不是函数。

51. 判断一个浮点数是否为0

float f;

if(f>=-0.00001&&f<=0.00001)

{

f等于0;

}

else

{

f不等于0;

}

c语言字符串数组分配没错,【字符串数组面试题】面试问题:C语言基础小结… - 看准网...相关推荐

  1. js 跳转到指定位置 高德地图_【高德字符串JavaScript面试题】面试问题:高德地图Js … - 看准网...

    申请JSAPI的开发者key 申请地址:http://lbs.amap.com/dev/key 引入高德地图JavaScript API文件: 创建地图容器 在页面body里你想展示地图的地方创建一个 ...

  2. c语言面试题东软,【东软集团程序员Java东软集团C语言面试题】面试问题:东软java面… - 看准网...

    当天我很早的就来到面试地点,其实我们还有课<算法分析与设计>,但是我们逃了吧,逃课的不止我一人,还有王凯,还有唐建军,王川,还有我的好友刘冠春.他们逃课也许是为了对面试做一个充分的准备吧, ...

  3. c语言开发ETL,【ETL开发工作内容|工作职责|ETL开发做什么】-看准网

    工具应用 ETL工具的典型代表有:Informatica.Datastage.OWB.微软DTS.Beeload.Kettle.久其ETL-- 开源的工具有eclipse的etl插件:cloveret ...

  4. 浅谈C语言动态内存分配及柔性数组

    文章目录 前言 1.动态内存的简单介绍 1.动态内存分配是什么? 2.为什么存在动态内存分配? 3.动态内存分配具体方法 1.动态内存函数 2.动态内存注意事项 2.经典面试题分析 3.C/C++程序 ...

  5. c语言指针数组分配内存,指针数组数组指针的分配内存及函数参数 C语言版

    最近写代码总是被基础知识卡住,十分耽误时间,今天又卡住了.所以下定决心一定要弄清楚这个问题,然后不好的是网上的资料总是解决的并不清楚,总是在纠结什么是指针数组什么是数组指针,看了<C缺陷和陷阱& ...

  6. c语言 指针 字符串 回文 strcmp,【查找字符串面试题】面试问题:C语言指针题集… - 看准网...

    1. 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(). A. p=q;           B. *p=*q;        C. a=*q;         ...

  7. c语言fwrite写字符串数组,【字符串数组面试题】面试问题:C语言 文… - 看准网...

    1.文件中存储的学生信息按照班级编号升序排列,每个班级的人数可以不同,要求读取文件中所有学生的成绩,计算每个班级的平均成绩,将班级编号和平均成绩输出. 存储格式: 145811  fuxin      ...

  8. C语言 编程判断花瓶是谁打碎的,【数组编程面试题】面试问题:C语言解决是谁… - 看准网...

    逛贴吧偶遇一道很新颖的C语言编程题,想到自己的C语言荒废了很久,便决定花点时间解决一下练练手. 具体题目如下: 实验题目(4)[见实验教材实验五的题目6]:编写程序exp5_6.c,请判断花瓶是谁打碎 ...

  9. c语言 万年历问题,【数组函数面试题】面试问题:万年历的C语言… - 看准网

    万年历_源码 主函数所在源码 #include #include #include int GetWeek(int year,int month,int day);//求今天是周几.周四就返回 4 . ...

最新文章

  1. 搭建 VUE + NODE.JS + ElementUI 学习过程中问题总结
  2. C++_泛型编程与标准库(三)
  3. jquery获取元素在文档中的位置信息以及滚动条位置(转)
  4. (11)zabbix item types监控类型
  5. layDate控件的使用
  6. WEB前端学习五 js什么是引用类型
  7. java反射减少servlet_利用java 反射机制来实现一个servlet处理多种请求
  8. asp.net 得到上一页地址
  9. FFT:从入门到沉迷
  10. Node.js——异步上传文件
  11. Jenkins持续集成环境常见问题分析及解决
  12. 实验1 JavaEE开发环境配置与基础练习(JSP)
  13. linux里的.mht是什么文件,mht文件扩展名,mht文件怎么打开?
  14. JS数据结构与算法-队列结构
  15. t32 emulation debug port failed
  16. 考试系统服务器 倒计时,考试系统倒计时实现
  17. matlab井函数,用MATLAB函数解承压含水层完整井非稳定流问题
  18. 项目研发管理经验交流
  19. 百度知道引流有哪些方法?一个互动式的疑问解答
  20. 直指行业痛点 玩法创新才是游戏占领市场的根基

热门文章

  1. 一行代码实现微光效果
  2. Bootstrap 4 正式发布,却可能生不逢时
  3. DotNet生成随机数的一些方法
  4. Powershell管理系列(二十八)PowerShell操作之修改AD账号密码
  5. 关于Presenting view controllers on detached view ...
  6. 易宝典文章——如何将PST文件导入到Exchange 2010 的邮箱
  7. 思科三层交换配置清单与案例
  8. JVM:垃圾回收相关概念
  9. 如何无侵入管理所有的微服务接口?
  10. TensorFlow中的对象检测教程:实时对象检测