初识指针的学习总结(1)
来源:互联网 发布:淘宝店铺动态怎么看 编辑:程序博客网 时间:2024/05/21 09:56
一.指针里的基本符号,结合例子解释
int a=6;
int* p_a;
//" * "相当于一个类型变量,可理解为把一个硬币翻了面。(用《C++primer plus》的话来说,p_a是指针,*p_a是变量a)
//int 指的是p_a只能是一个整型(即a)的指针;
//在这里指出p_a的类型是指针(上面a的类型是int),现在创建了一个新的变量——"int *"(指向Int类型的指针)
//内存需要给p_a分配一个内存。
p_a=&a;//“ & ”是一个获取地址的运算符,此时p_a里存储的是a的地址;
cout << a << endl;//输出6;
cout << *p_a << endl;//输出的还是“6”,“ * ”可视为再把硬币翻一次面,就回到了a;
cout<<&a<<endl;//输出的是a的地址;
cout<<p_a<<endl;//同上,说明p_a里存的是a的地址;
p_a++;
cout<<*p_a<,endl;//此时指针指向的是p_a++这个地址,所以再翻面输出的时候就不是a了;
还有一个值得关注的问题:
*p_updates++;cout << updates << endl;//此时输出的是6,可是难道不应该和下面一样输出7吗?自增运算符在这里不能用吗?*p_updates = *p_updates + 1;cout << updates << endl;//如果写“+1”就会输出7了++自增运算有条件限制吗?我提问了,看看什么时候有回复再来修改。
二、详细解释指针新类型
int *p_a这种写法也可以,哪里添加空格或者直接不加空格对编译器来说是一样的;
但是每一个指针变量都必须有一个“ * ”。
Int* a,b;//意味着一个指针变量a和一个int b
三、给指针一个地址;
int * p;
p =(int*) 0xB8000000;//没有“(int *)”不行,此时指针的地址是B8000000;
cout << p;
四、指针为什么总是占四个字节
指针存放的是一个地址,32位系统中一个地址的长度为32位,所以一个指针的大小也是32位,即4字节
五、用new来创建动态数组
1.单个
int* p=new int ;
2 数组
(1)一维数组
double* p3 = new double[3];//创建一个大小为3,类型为double的数组,但此时没给赋值,只是申请到了地方。
p3[0] = 0;
p3[1] = 1;//指针名可以作为数组名,但是指针名++有意义。数组名不可修改。
p3[2] = 2;
cout << "p3[0]" << p3[0] << endl;//输出的是0
p3 = p3 +1;
cout << p3[0] << endl;//输出的是1,说明p3代表数组读取的起始位置,导致P3指向数组的第二个元素。这里的“1”是一个double的字节数(8)。
p3++;
cout << p3[0];//输出2
cout << p3[2];//输出乱码,因为前面只申请了3double空间,这会溢出了
//直接用指针申请动态空间时,把指针的名字直接解释成数组名字pa=a
//用指针指向已经申请好的数组空间时,指针名字是数组地址,*pa=a;pa!=a.
double a[3] = { 1.1,2.2,3.3 };
short b[3] = { 1,2,3 };
double* pa = a;
short*pb = &b[0];
cout << "\n直接输出 pa " << pa << endl;//估计是数组a开头的地址
cout << "\n输出 *pa " << *pa << endl;//a[0];
cout << "\n直接输出 pb " << pb << endl;//b开头地址
cout << "\n输出 *pb " << *pb << endl;
pa++;//加了所属类型的字节数;
cout << "\n数组a的地址+1 :/npa:" << pa << "\n*pa" << *pa << endl;
pb++;//加了所属类型的字节数;
cout << "\n数组b的地址+1 :/npa:" << pb << "\n*pa" << *pb << endl;
cout << *(pa + 1) << endl;//这也是允许的输出地址加一后对应的数字
cout << &a[0]<< endl;
cout << &a << endl;//输出同上,说明取数组地址,一定是数组第一个元素的地址
- 初识指针的学习总结(1)
- 初识C 指针(1)
- [C学习]指针初识
- 学习笔记---初识指针
- 指针的学习总结
- 初识指针4(指针的指针的理解)
- Dubbo的学习与总结(一)- -初识
- 指针的初识
- git学习总结(1)初识git
- JavaScript学习总结【1】初识JS
- JavaScript学习总结【1】、初识JS
- 初识指针7(void类型指针的认识)
- 指针的学习总结2
- 指针初识(一)
- 初识指针(初学者)
- 指针学习总结(数组指针,指针数组)
- 指针学习总结(函数指针,指针型函数)
- 初识指针,简单的理解
- 韩顺平老师php从入门到精通149讲
- iOS开发之如何跳到系统设置里的各种设置界面
- [Python] Bargain Box Kung Fu
- 【内核IPSec代码分析1】术语与结构体
- Super Ugly Number | LeetCode
- 初识指针的学习总结(1)
- Linux学习笔记(五、常见目录的作用)
- asio io_service multithreaded timer
- 说说&和&&的区别?
- hand_excel
- 点击一个Btn其他的btn的颜色变成原来的样子
- mysql alter
- 语音识别基本原理介绍--gmm-hmm中训练的完整版
- (四十七)读取一行输入getline()和get()