C语言基础小结(二)

原创 2012年03月25日 16:18:20
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 <assert.h>
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个函数均在<stdlib.h>中
36. void *memset(void *s, int c, size_t n)把指针s所指向的空间里的n个字节设置为值c,在<string.h>中;
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 <stdarg.h>
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语言基础小结(一)

1. 编写原代码(.c)->预处理(预编译)(.i)->编译(.s)->汇编(.o/.obj)->连接->执行 2. C语言不同于C++,C中变量必须先定义后使用,不能在定义变量的同时使用变量。 ...

C语言I/O小结 poj百练2804字典(基础题)

这个题目字典的输入是一个问题 遇到空行结束 那么如何使用好scanf 和 gets呢,数据量大肯定还是要用C的I/O的   sscanf是一个很不错的函数 刚好解决了这个问题 我们知道sc...
  • cfzjxz
  • cfzjxz
  • 2012年05月07日 15:55
  • 1148

基于BP神经网络的简单字符识别算法自小结(C语言版)

BP神经网络学习小结

C语言小结--数组

1、什么是数组(1)从内从角度来说,数组就是一次分配多个变量,而且这些多个变量在内存中是依次相连的。 (2)从编译器角度来说,数组变量也是变量,和普通变量没有什么本质区别,变量的本质就是一个地址,这...

<C语言全局变量小结>

在这之前,有一个C知识点要回顾一下:那就是,在C语言中,每一个变量和函数都有两个属性,它们分别是”数据类型“和”存储类别“,提这个是因为很多时候往往只知道”数据类型“这个属性而把”存储类别“这个重要的...

C语言: fwrite和fread函数的用法小结 (网上摘抄,方便以后查询)

转自:http://purpleroom.blog.sohu.com/133812394.html fwrite和fread是以记录为单位的I/O函数,fread和fwrite函...

C语言标准 I/O小结 (感谢 simon_夏 的分享)

与文件I/O围绕文件描述符操作不同,标准I/O的操作是围绕流进行的。 流: 对于流,《C和指针》里有一段解释得很好: ANSI C进一步对I/O的概念进行了抽象。就C程序而言,所有的I/...

深入理解C语言----标准I/O小结(缓冲区,I/O函数及其他相关问题)

与文件I/O围绕文件描述符操作不同,标准I/O的操作是围绕

C语言小结(一)

一、伪函数 结构体或类通过函数重载调用类似方法一样调用 重载关键字operator class Hello{   public:     void operator ()(){      ...
  • su_33
  • su_33
  • 2016年03月31日 09:48
  • 39

C语言宏定义作用、使用方法小结(2)

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。   在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言基础小结(二)
举报原因:
原因补充:

(最多只允许输入30个字)