c++学习笔记(一)从c语言到c++
等待完善
本章主要包括:
1.1函数指针
1.2位运算
1.3c++中的引用 &
1.4标识符const与常量
1.5c++与动态内存分配
———————————————————————————————————
1.1函数指针
(1)引入函数指针要了解的事:
1)在程序运行期间,函数占用内存。 2)函数名存放了函数所占内存区域的起始地址,函数名存放了入口地址。
(2)函数指针:将函数的入口地址,赋值给一个指向函数的指针。
定义形式:类型名(*指针变量名)(函数参数类型1,函数参数类型2…)
#include <stdio.h> void PrintMin(int a,int b) { if( a<b ) printf("%d",a); else printf("%d",b); } int main() { void (* pf)(int ,int);//定义函数指针 int x = 4, y = 5; pf = PrintMin;//函数指针指向PrintMin的函数入口 pf(x,y); return 0; }
(3)用途:形参是函数时,传递函数的入口地址。
如:qsort函数库
void qsort(void *base, int nelem, unsigned int width,
int ( * pfCompare)( const void , const void ));
其中
base:起始地址
nelem:元素个数
width:每个元素的大小
pfCompare( const void ,const void):比较函数,自己编写的。
int ( * pfCompare)( const void *, const void *)这就是函数做形参。
1.2位运算
位运算速度快,可以用于优化代码执行速度 。
1.2.1按位与(&)
(1)双目运算符
(2)规则:11得1其余为0
(3)用途:二进制下,将某些位重置位0。
如:33&0xfff0 可以将后四位重置为0
1.2.2按位或(|)
(1)双目运算符
(2)规则:11得1其余为0
(3)用途:二进制下,将某些位重置位1。
如:33&0x000f可以将后四位重置为1。
1.2.3按位异或(^)
(1)双目运算符
(2)规则:不同为1,相同为0
(3)用途:可用于交换
//做这样的异或操作,相当于交换ab int a = 33; int b = 22; a = a ^ b; b = a ^ b; a = a ^ b;
1.2.左移(<<)
(1)双目运算符
(2)将一个数左移n位,相当于乘以2的n次方。前提是没超过Int上限。
1.2.4右移(>>)
(1)双目运算符
1.3引用
个人感觉像是起了个别名
(1)引用的定义方式:
int a; int & r = a;//定义了一个int类型的引用,并且引用了a;
(2)引用赋值以后,引用和被引用的变量相互替换,并且引用和被引用之间的关系不能改变。
int a , b ; a = 3; b = 4; int & ra = a;//定义a的引用ra ra = b;//此时b中的5被赋值到a变量
引用的作用:
1)引用调用中传递实参。
#include<stdio.h> void swap(int & a, int & b); int mian(){ int a = 4; int b = 5; swap(a, b); return 0; } void swap(int & a, int & b){ //通过引用调用传递实参 int temp; temp = a; a = b; b = temp; }
2)引用作为函数返回值
3)常引用
通过const定义。
int a; const int & ra = a; ra = 0;//编译出错 a = 0;//编译正确
2)常引用不能通过引用修改被引用变量的值。
1.4const关键字
1.4.1定义常量
const int a = 4;//定义常量时要赋值
常量无法改变
1.4.2定义常引用
int a = 1; const int & ra = a;
不能通过常引用改变被引用变量的值
1.4.3定义常指针
int a = 122; const int* pa = &a;
不能通过指针来改变所指向变量的值。
1.5动态内存分配与标识符new、delete
1.5.1 P = new T
T为一种类型,P为T类型的指针。
动态分配大小与T相同的空间,并把起始地址赋值给指针P
1.5.2 P = new T
动态分配大小与N个T相同的数组空间,并把起始地址赋值给指针P
1.5.3 delete P
1.5.3 delete [] P
- 传智播客c/c++公开课学习笔记--C语言与木马恶意代码分析和360安全防护揭秘
- C++之C语言混合编程学习笔记
- 从C++到C——我的C语言学习笔记
- C++学习笔记3 C语言到C++的升级
- C语言学习笔记 (002) - C++中引用和指针的区别(转载)
- C语言学习笔记之C++
- C语言学习笔记 (003) - C/C++中的实参和形参(转)
- C语言学习笔记之C++面向对象
- C++学习笔记23 初始化列表
- c++ pirmer 学习笔记之参数的传递
- C++学习笔记001-关于cin的几个用法
- C++ list 类学习笔记
- C++学习笔记19:构造函数与析构函数
- 【C++ 学习笔记】 MFC CEdit
- 《数据结构与算法——C语言实现》学习笔记——归并排序
- C++ STL学习笔记十二 hash_map映照容器
- C++ 学习笔记
- C++学习笔记之运算符重载例子
- C++学习笔记
- C++学习笔记(1)