指针保存的是另一个对象的地址(概念真的很重要!!)

    int a=;
int *ptr = &a;//*定义一个指向int类型的指针ptr, &a取变量a的地址

引用是对象的别名,多用于函数形参,引用声明时必须初始化

int A=;
int &refA=A;
int &ref;//错误!!必须初始化
refA++;//操作在对象上进行,引用不变,因此A=1025

一、指针的初始化

几个概念,迷途指针==野指针==悬浮(dangling)指针==失控指针

当对一个指针delete后,会释放原来的内存,但指针变量名依然存在,值却没有设置为NULL或0,这就相当于声明一个指针时没有初始化,

当再次使用该指针时,则会出现严重错误(崩溃是肯定的,本人还没体会到多严重),以上是我的理解

原则:不能使用未初始化的指针,引申点说就是不能使用无效的指针(如上文)这就引出指针的初始化问题,

有四种值可用来初始化指针(来自C++ primer及个人理解 )

1.0或者NULL或者相应的const值

2.类型匹配的某对象的地址,用&取某变量的值

3.另一对象之后的下一地址????

4.同类型的有效指针,即不能为野指针

一些注意点如下

1.任何指针变量刚被创建时不会自动成为NULL指针,默认值是随机的

2.0值和NULL等效,表示不指向任何对象;不能用int类型变量给指针赋值,该变量是0也不行,但值是0的const量可以

    int a;
int b=;
const int c=;
int *p;
p=a;//不能用int变量初始化
p=b;//b是0也不能用来初始化
p=c;//const就可以
p=;//OK,相当于赋值NULL

二、指针数组、数组指针

对数组P[N],区别p+1和&p+1

数组名本身就是指针,再加&,就是二级指针,加1就是移动 1*sizeof(数组大小)

#include <iostream>
using namespace std; void main(){
int v[][] = {
{,,,,,,,,,},
{,,,,,,,,,}
};
int (*a)[] = v;//数组指针---指向数组的指针
cout<<**a<<endl; //
cout<<**(a+)<<endl; //
cout<<*(*a+)<<endl; //
cout<<*(a[]+)<<endl; //
cout<<*(a[])<<endl; //
}

三、函数指针、指针函数(听起来好乱!!)

四、指针和const

const char *ptr;//const指针
char *const ptr;//指向const对象的指针
//错误char const *ptr;
const char *const ptr;//指向const对象的const指针

可还是记不住啊!???因为没理解吗?

【C++基础】指针好难啊,一点点啃——基本概念的更多相关文章

  1. 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念

    055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...

  2. C#基础指针类型

    在C#的不安全的代码书写中,类型可以是指针类型.值类型或引用类型. 指针类型声明具有下列形式之一:   type* identifier; void* identifier; //allowed bu ...

  3. 黑马程序员——C语言基础 指针

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)指针 首先指针是C语言中非常重要的数据类型,如果你说C语言中除了指针 ...

  4. C/C++入门基础---指针(2)

    5,数组指针的不同含义 int a[5][10]; printf(%d, %d, %d\n", a, a+1, &a+1);  //1310392,1310432,1310592 a ...

  5. C/C++入门基础----指针(1)

    指针其实就是一个变量, 和其他类型的变量一样.在32位计算机上, 指针占用四字节的变量.指针与其他变量的不同就在于它的值是一个内存地址,指向内存的另外一个地方, 指针能够直接访问内存和操作底层的数据, ...

  6. 数据结构基础——指针及动态内存分配(malloc)

    一.指针 C语言中的指针是一种数据类型,比如说我们用int *a;就定义了一个指针a,它指向一个int类型的数.但是这个指针是未初始化的,所以,一般的,我们都在创建指针时初始化它,以免出错,在还不吃的 ...

  7. C语言基础:指针初级(补充) 分类: iOS学习 c语言基础 2015-06-10 21:54 19人阅读 评论(0) 收藏

    结构体指针:指向结构体指针的变量的指针. 结构体指针指向结构体第一个成员变量的首地址 ->:   指向操作符 定义的指针变量必须指向结构体的首地址,才可以使用  ->  访问结构体成员变量 ...

  8. C++基础--指针,&的用法

    #include "stdafx.h" #include <stdio.h> #include <string.h> int main() { ] = {, ...

  9. Windows 10开发基础——指针事件和操作事件(一)

    主要内容: 1.指针事件 2.操作事件 1.指针事件 指针事件由各种活动输入源引发,包括触摸.触摸板.笔和鼠标(它们替代传统的鼠标事件).指针事件基于单一输入点(手指.笔尖.鼠标光标),但不支持基于速 ...

随机推荐

  1. JS源码(条件的判定,循环,数组,函数,对象)整理摘录

    --- title: JS学习笔记-从条件判断语句到对象创建 date: 2016-04-28 21:31:13 tags: [javascript,front-end] ---JS学习笔记——整理自 ...

  2. Java通过代理类实现数据库DAO操作

    下面的所有代码示例都取自李兴华的<Java Web开发实战经典>的随书源码,因为觉得设计得很好,所以将代码摘录下来作成笔记. 首先,我们在一个java文件中定义要存储的结构类型: impo ...

  3. 【Qt】Qt之进程间通信(Windows消息)【转】

    简述 通过上一节的了解,我们可以看出进程通信的方式很多,今天分享下如何利用Windows消息机制来进行不同进程间的通信. 简述 效果 发送消息 自定义类型与接收窗体 发送数据 接收消息 设置标题 重写 ...

  4. 基于WORDPRESS+MYSQL的绿色企业主题制作全过程

    基于WORDPRESS+MYSQL的绿色企业主题制作全过程基于WORDPRESS+MYSQL的绿色企业主题制作全过程基于WORDPRESS+MYSQL的绿色企业主题制作全过程基于WORDPRESS+M ...

  5. DOS命令之----Netstat+Task以及相关使用

    作为一个初步接触电脑的人,在学习Android的过程中,遇到各种问题,今天遇到了.这样一个错误提示: The connection to adb is down, and a severe error ...

  6. 机器学习实战——k-邻近算法:约会网站

    1.kNN 算法 算法说明: set<X1,X2……Xn> 为已知类别数据集,预测 点Xt 的类别: (1)计算中的set中每一个点与Xt的距离 (2)按距离增序排列 (3)选择距离最小的 ...

  7. Tools for Presention

    ZoomIt v4.5 http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx 微软的教师演示工具 主要有放大,画图,倒计时的功能. ...

  8. MySQL监控工具-orztop

    先安装orzdba,链接:http://blog.itpub.net/28939273/viewspace-1875895/ 安装依赖的包:[root@hank-yoon servers]# yum ...

  9. 外企iOS开发的笔试题

    一组外企iOS开发的笔试题,您能回答出来吗?从群里收集来的. (miki西游@mikixiyou的文档,原文链接: http://mikixiyou.iteye.com/blog/1546376  转 ...

  10. 从零开始学ios开发(五):IOS控件(2),Slider

    下面继续学习ios的其他控件,这次会使用到的控件有Slider,当然还有一些之前已经使用过的控件Label. 这次我们不新建一个project了,当然如果你愿意重新创建一个新的项目也完全可以,我们还是 ...