c++笔记(1):常量指针和指针常量
来源:互联网 发布:在线音乐识别软件 编辑:程序博客网 时间:2024/05/22 07:08
1.
普通指针可以这样赋值:
int *p;p = new int;
*p = 200;
#include<iostream> using namespace std; int main() { int a=100; int *p; *p=a;//错误,不要求指针变量一定要初始化,但一定要先对指针变量有效赋值,再用指针变量间接访问 cout<<*p<<endl; return 0; }*p的意思是“以p的内容为地址的变量”,*p是一个局部变量,里边是一个垃圾值,是以p里边的地址为单元的变量,是一个未知的,但是,我们总共分配了两个空间,一个是p的空间,一个是a的空间,在程序运行中,程序将100这个值去修改了一个不属于它(分配)的空间,所以会出错,这个一般编译链接时都不会报错,但调试时会出错。
2.
十进制:Dec
八进制:Oct (必须以数字 0 为前缀)
十六进制:Hex (以 0x 或 0X 为前缀)
枚举类型:enum
#include <iostream>using namespace std;enum colour{ red, yellow, blue, white, black };//类型标识符color,枚举常量{。。。},枚举类型变量cint main(){ colour c; c=red; cout<<"red: "<<c<<endl; c=blue; cout<<"blue: "<<c<<endl; c=black; cout<<"black: "<<c<<endl;}3.
转义字符示例
#include<iostream>using namespace std ;int main (){ cout<<"operating\tsystem\n" ;//'\t'横向制表符,\n换行符 cout<<'\101' << '\t' << 'A' <<"\b\b"<<'B'<<'\012';//'\b'退格符,'\012'换行}
4.
指向常量的指针不能修改所指常量。
指向常量的指针可以修改为指向变量,但是不能用间址方式修改变量(普通指针可以)
#include<iostream>using namespace std;int main(){const int a=100;int b=100; int const *p=&a; //*p = b;错误,指向常量的指针不能用间址方式修改变量p=&b;//正确,可以修改为指向变量cout<<*p<<endl;return 0;}
指针常量的值只能在定义的时候初始化,之后不能修改。
#include<iostream>using namespace std ;int main (){ int max ; int * const pmax = & max , * p ; * pmax = 1000 ; cout << "max1 = " << * pmax << endl ; p = new int ; * p = 2000 ; cout << " * p = " << * p << endl ; // pmax = p ; // 错误 p = pmax ; cout <<" * p2 = " << * p << endl ; * pmax = * pmax + * p ; cout << " max2 = " << * pmax << endl ;}
5.
虽然所有的指针变量占用的内存大小相同,但指针的类型和指向的数据的类型仍要一致,因为不同类型的指针,在作+-运算时,它的步长是不一样的。
6.
对于指向常量的指针常量(const 类型 * const 指针),指针本身和所指对象的值在定义之后都限制为只读。
#include<iostream>using namespace std ;int main (){ const int MIN = 10 ; int max ; const int * const pmax = & max ; // * pmax = 1000 ;错误,间址访问为只读 max = 1000 ; cout << " max = " << * pmax << endl ; const int * const pmin = & MIN ; // pmin = & max ;错误,不能修改指针常量 // * pmin = 0 ;错误,间址访问为只读 cout << " MIN = " << * pmin << endl ;}
7.
常引用:const 类型 & 引用名 = 对象名 ;
不能通过常引用对对象进行写操作。
int a=314;const int & ra=a;//ra是a的常引用//ra=618;//错误,不能通过常引用对对象a执行写操作a=618;//正确8.
x = ++ i 相当于i = i + 1,x = i;x = i ++ 相当于x = i,i = i + 1。
9.
强制类型转换
( 类型 ) ( 表达式 )类型 ( 表达式 )
( 类型 ) 表达式
10.
实数比较宜采用求误差值形式:如fabs ( x - y ) < 1e-5
11.
E1 ? E2 :E3
若 E1 的值为true(非0),条件表达式的值为 E2 的值;若 E1 的值为false(0),条件表达式的值为 E3 的值。
12.
逗号表达式:E1 , E2 , E3 …… ,En
顺序执行 E1、E2、E3 …… En,最后获得逗号表达式的值。
13.
三本编程求职书:
1.Cracking the Coding Interview
2.Programming Interview Exposed
3.Elements of Programming Interviews: The Insiders' Guide
0 0
- c++笔记(1):常量指针和指针常量
- C++-指针常量和常量指针
- C指针常量和常量指针
- C/C++指针常量和常量指针
- C/C++ 指针常量和常量指针
- 指针和常量 c
- 指针常量和常量指针(指向常量的指针)
- 常量指针和指针常量(1)
- 常量指针和指针常量(const)
- 指针常量和常量指针(转)
- 常量指针和指针常量
- 指针常量和常量指针
- 常量指针 和 指针常量
- 常量指针 和 指针常量
- 常量指针 和 指针常量
- 指针常量和常量指针
- 常量指针和指针常量
- 常量指针和指针常量
- RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描
- url中参数加密
- Android内部存储外部存储进行数据缓存等工具类
- spring-data-redis中的序列化/反序列化
- BZOJ 1047
- c++笔记(1):常量指针和指针常量
- dpdk中文-mbuf的基本操作
- iOS 开发 Provisioning Profile(描述文件) 详解
- 生活中对JQery的总结 随手记
- HTML5入门软硬件技术基础
- 将构建变量插入清单
- 理解SQL(1,2,3)
- maven Spring 4.2+SpringMVC+dubbo解决TypeProxyInvocationHandler.invoke(SerializableTypeWrapper.java:239
- CSDN-markdown编辑器语法