首页 / C++ / C/C++之学习笔记
C/C++之学习笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C/C++之学习笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4915字,纯文字阅读大概需要8分钟。
内容图文
%x 打印十六进制%d 打印十进制%b 打印二进制%c 打印字符%s 打印字符串%f 打印单精度float%lf 打印双精度double
dynamic_cast: 通常在基类和派生类之间转换时使用,把一个派生类转换为基类使用这个转换,run-time castconst_cast: 转换是去掉const变量的const, 主要针对const和volatile的转换.static_cast: 一般的转换,类似于C/C++里面的强制类型转换。no run-time check.通常,如果你不知道该用哪个,就用这个。reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。
#include <stdio.h>int main(void){struct bs{} bit, *pbit;bit.a = 1;bit.b = 7;bit.c = 15;printf("%d,%d,%d \n",bit.a,bit.b,bit.c);pbit = &bit;pbit->a = 0;pbit->b &= 3;pbit->c |= 1;printf("%d,%d,%d \n",pbit->a,pbit->b,pbit->c);//printf("the aaa struct sizeof: %d\n", sizeof(data));return 0;}
#include<stdio.h>intmain( void){size_t a = 2;printf("a<<3 = %d\n",a<<3);return 0;}结果: a*(2*2*2) = 16
#ifndef _TEST_HEAD_H_#define _TEST_HEAD_H_代码体......#endif
#ifdef __cplusplusextern "C" {#endif代码体......#ifdef __cplusplus}#endif
单行:/** The length of the activequeues array */多行:/** The length of the activequeues array* The length of the activequeues array*/
(1)、Windows编译器判断#ifdef WIN32/* If we‘re on win32, then file descriptors are not nice low densely packedintegers. Instead, they are pointer-like windows handles, and we want touse a hashtable instead of an array to map fds to events.*/#define EVMAP_USE_HT#endif
(2)、宏定义判断#ifdef EVMAP_USE_HT#include "ht-internal.h"struct event_map_entry;HT_HEAD(event_io_map, event_map_entry);#else#define event_io_map event_signal_map#endif
1. and运算and运算通常用于二进制取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。相同位的两个数字都为1,则为1;若有一个不为1,则为0。 00111 11100 (&;或者and) ---------------- 001002. or运算
or运算通常用于二进制特定位上的无条件赋值,例如一个数or 1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数or 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。相同位只要一个为1即为1。 00111 11100 (|或者or) ---------------- 111113. xor运算异或的符号是⊕。 xor运算通常用于对二进制的特定一位进行取反操作,因为异或可以这样定义:0和1异或0都不变,异或1则取反。xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。xor运算可以用于简单的加密,比如我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥。1314520 xor 19880516 = 20665500,我就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520,于是她就明白了我的企图。相同位不同则为1,相同则为0。 00111 11100 (^或者xor) ---------------- 11011
c语言基础教程书上都有这么一课,就是位运算,"|","&", 等等操作符。当表现一个对象有几种属性时候,它可以并列拥有几种属性,比如一件衣服,他可以是蓝色(定义蓝色为 0001 即0x1),红色(定义红色为0010,即0x2),黑色(定义为0100,即0x4),白色(1000,0x8)所以当你看到这件衣服时候,有个表示告诉你他的属性是0xf,即1111,就表示4种颜色它全具备,如果属性是0xa,即1001,那表示它具有 蓝色 和 白色 2种属性。这么讲比较通俗点吧。。。。至于宏定义为什么喜欢定义成 0xf 什么的,还有经常看到定义成0x00000001 这种形式的。首先计算机运算全是通过2进制进行的,所以把16进制(0x 代表这个数是16进制的)转换成2进制,那么f 就是 1111。c语言基础教程书上都有这么一课,就是位运算,"|","&", 等等操作符。当表现一个对象有几种属性时候,它可以并列拥有几种属性,比如一件衣服,他可以是蓝色(定义蓝色为 0001 即0x1),红色(定义红色为0010,即0x2),黑色(定义为0100,即0x4),白色(1000,0x8)所以当你看到这件衣服时候,有个表示告诉你他的属性是0xf,即1111,就表示4种颜色它全具备,如果属性是0xa,即1001,那表示它具有 蓝色 和 白色 2种属性。这么讲比较通俗点吧。。。。
基本原理:
1、 单链表:每一个节点里存到下一个节点的指针(Pointer)
循环链表的运算与单链表的运算基本一致。所不同的有以下几点:1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。2、在判断是否到表尾时,是判断该结点链域的值是否是表头结点,当链域值等于表头指针时,说明已到表尾。而非象单链表那样判断链域值是否为NULL。双向链表其实是单链表的改进。3、 双向链表:
当我们对单链表进行操作时,有时你要对某个结点的直接前驱进行操作时,又必须从表头开始查找。这是由单链表结点的结构所限制的。因为单链表每个结点只有一个存储直接后继结点地址的链域,那么能不能定义一个既有存储直接后继结点地址的链域,又有存储直接前驱结点地址的链域的这样一个双链域结点结构呢?这就是双向链表。在双向链表中,结点除含有数据域外,还有两个链域,一个存储直接后继结点地址,一般称之为右链域;一个存储直接前驱结点地址,一般称之为左链域。设计实现:
基本原理:后进先出的规则1 顺序栈:使用数组实现顺序存储数据2 链栈:使用指针实现链式存储数据设计实现:
realloc
原文:http://www.cnblogs.com/ht-927/p/4726514.html
内容总结
以上是互联网集市为您收集整理的C/C++之学习笔记全部内容,希望文章能够帮你解决C/C++之学习笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。