b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

strchr函数返回_strchr函数是什么缩写_c++ strchr函数(3)

电脑杂谈  发布时间:2017-02-22 07:23:41  来源:网络整理

}

二、位操作

{

2.1 ~(0u)是全1;

2.2 位与& 位或 | 位取反~ 位异或^

2.3、位与、位或、位异或的特点总结:

位与:(任何数,其实就是1或者0)与1位与无变化,与0位与变成0

位或:(任何数,其实就是1或者0)与1位或变成1,与0位或无变化

位异或:(任何数,其实就是1或者0)与1位异或会取反,与0位异或无变化

2.4、左移位<< 与右移位>> C语言的移位要取决于数据类型。

对于无符号数,左移时右侧补0(相当于逻辑移位)

对于无符号数,右移时左侧补0(相当于逻辑移位)

对于有符号数,左移时右侧补0(叫算术移位,相当于逻辑移位)

对于有符号数,右移时左侧补符号位(如果正数就补0,负数就补1,叫算术移位)

2.5、小记:常与 1 拿来 做位运算。让他取反、移位 得到想要的数。

2.6、直接用宏来置位、复位(最右边为第1位)。 置位置1,复位置0 ;

#define SET_NTH_BIT(x, n) (x | ((1U)<<(n-1)))

#define CLEAR_NTH_BIT(x, n) (x & ~((1U)<<(n-1)))

}

三、指针—精髓

{

3.1 printf("%p \n"); 其中%p表示输出一个指针,就是指针变量(其存放的那个地址),可以理解为输出一个地址。

3.2 int* p1, p2 ; 等同于 int *p1; int p2;int*p="Linux",其不能改变*P,因为”linux"是一个常数。

3.3 ( 代码规范性 )在定义指针时,同时赋值为NULL,在用指针时,先判断它是不是NULL。尤其是在malloc申请内存后,free(p);则一定要让p=NULL

3.4 C/C++中对NULL的理解: { #ifdef _cplusplus// 定义这个符号就表示当前是C++环境

#define NULL 0;// 在C++中NULL就是0

#else

#define NULL (void *) 0;// 在C中NULL是强制类型转换为void *的0

#endif

3.5、修饰词:const (修饰变量为常量,应该理解为不应该去变它,当作常量,而并非永远不能改变,当然要看具体运行环境,在gcc,const 这种就可以采用指针方式修改,但是在

在VC6.6++中就不可以修改):其虽然是当作常数,但是仍然存放在数据段中,用指针仍然可以改变值。

第一种:const int *p;

第二种:int const *p;

第三种:int * const p;

第四种:const int * const p;

3.6、 数组 int a[2]; 其中a是指首元素的首地址,&a是整个数组的收地址(数组指针,其这个指针指向一个数组),他们的值是一样的,但意义不一样,可以参照 int a; int *p=&a; 来理解。数组和指针天生姻缘在于数组名;

int a[3]; int* p=a;是可以的,但是 int *p=&a;就会报错,尽管他们的值是一样的,但意义不一样,所以是不允许的,除非强制类型转换。在访问时是a[0],其实编译器会把它变成

*(a+0)的方式,只是用a[0]看起来更方便,封装了一下而已,实质还是指针。

3.7、 siziof()是一个运算符,测试所占内存空间,如 int a[100] ;sizeof(a)=400;

与strlen( )要有所区别,他是测字符串实际长度的,不包括&lsquo;\0&lsquo;,如果给strlen传的参数不是一个字符串,则它会一直去找,直到 找到第一个 &lsquo;\0&rsquo;,然后再计算其长度。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33816-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...