关闭

C++基础---指针

标签: C++数据类型指针地址指针保存的地址指针指向内存地址的值
287人阅读 评论(0) 收藏 举报
分类:

1. 指针

1.1 指针的概念

  • 指针:就是用来保存内存地址的变量。
    注:通过指针,程序员可以直接对内存进行操作。

1.2 指针与变量类型

  • 指针:只能存储与它类型相同的变量的地址。

    (1)错误的指针赋值方法:
    float a; 
    int *p = &a; 
    编译错误:error C2440,"="cannot convert from "float*" to "int*"  。</font>
    
    (2)正确的指针赋值方法:
    int a; 
    int *p = &a; 

1.3 用指针来访问值

  • 符号”& “: 获取变量在内存中的保存地址符,int *p = &a;
  • 符号”* “:间接引用运算符,当使用星号时,就读取它后面变量中所保存的地址处的值
    注:指针变量p前面的间接运算符“*”的含义是指“存储在此地址处的值”。*p的意思就是读取该地址处的值。由于p存储的是a的地址,因此*p就是读取保存a变量地址处的值。

1.4 指针地址、指针保存的地址、指针指向的该地址处的值的区别

  • 代码示例:
    int a = 1;
    int *p = &a;
  • 指针地址:指保存指针变量的内存地址,获取指针地址也是用&(取地址符),就是&p得到指针的内存地址
  • 指针保存的地址:指指针指向的变量的内存地址,存储与它类型相同的变量的地址,就是p/&a,它俩值是一样的;
  • 指针指向的该地址处的值:指指针指向的内存地址中保存的值,就是*p/a,它俩值是一样的;

1.5 指针对数值的操作

  • 计算机通过间接运算符“*”访问并读取到该地址的数据,那么就可以对数据进行修改。

    int a = 1;
    int *p = &a;
    cout <<"a="<< a << "; \t" <<"*p"<< *p <<";"<< endl; 
    =>a=1;  *p=1;
    *p = 100;
    cout <<"a="<< a << "; \t" <<"*p"<< *p <<";"<< endl; =>a=100;    *p=100;
    a = 20;
    cout <<"a="<< a << "; \t" <<"*p"<< *p <<";"<< endl;
    =>a=20;  *p=20;

1.6 指针保存的地址可以更改

  • 代码示例:

    int a = 1;
    int b = 2;
    int *p = 0; //p的值为空指针地址00000000
    p = &a;//p的值为变量a的内存地址
    p = &b;//p的值为变量b的内存地址

参考文献:
[1]《C++全方位学习》范磊——第八章
[2]《C++程序设计教程(第二版)》钱能——第三章
[3] 百度搜索关键字:C++指针、指针地址、指针保存的地址、指针指向的该地址处的值

0
0
查看评论

C++ 指针与数组的练习

int main() { int array[10] = { 6, 1, 2, 4, 5, 7, 9, 8 }; int *p1 = array; int *p = &array[0]; printf("%p, %p\n", p, p1)...
  • mir_age
  • mir_age
  • 2017-06-25 15:58
  • 262

C/C++指针的经典笔试面试题

0.预备知识,最基础的指针 其实最基础的指针也就应该如下面代码: int a; int* p=&a; 也就是说,声明了一个int变量a,然后声明一个int 的指针,*p指向a的地址,&也就是取地址符号,而*是指针中取内容的符号,仅仅在声明的时候标记这个变量是指针.可能有点绕口...
  • xiyangyang8
  • xiyangyang8
  • 2016-02-22 00:09
  • 1589

指针基础概念

第一节;简述指针的一些概念 都是在C的语言基础上的;本人开始细学指针,所以有错误或不严谨的地方请大家多多指出。 刚开始可能会有的晕,但详细介绍的; 一;关于地址的一些概念1。内存单元;在计算机中,所有的数据都是存放在内存中的,一般把内存中的一个字节称为一个内存单元,不同的数据类型所占用的内存单...
  • zw1996
  • zw1996
  • 2016-05-05 17:12
  • 245

【Java数据结构基础】对象与指针关系

对象与指针关系java中的指针 指针的作用:1.访问对象 2.指针赋值 由于在java中指针被严格的限制以上操作,这保证了java对象的安全性。同时java中这种指针也被称为“引用”。//看这段代码 calss A{ private int x; public void f()...
  • Drasil
  • Drasil
  • 2015-08-29 19:23
  • 386

c++中指针问题一个很好的例子

偶尔在问题区看到这个问题,感觉有助于对指针问题理解,所以记录一下,希望给看到的你一些帮助。
  • guwuchangtian
  • guwuchangtian
  • 2017-06-03 11:52
  • 659

c++的三种指针

1.指向常量的指针 指针所指的对象是常量,指针本身是常量。#include<iostream> using namespace std; void main() { int stop; const char *pc="dukang"; ...
  • snicolashe
  • snicolashe
  • 2015-06-28 10:24
  • 1285

c/c++中指针的理解(初学者)

关于指针,大家肯定不陌生,一些初学者,想必会出现思绪混乱的情况,现在我就来帮大家缕一缕吧。(第一次写微博 有点小紧张) 大家应该了解一些计算机对内存的管理方式吧。操作系统会将内存单元进行编号,这些编号都是有顺序的,大家应该听过操作系统分为32位和64位的吧,这个就是操作系统对内存的最大编号,32...
  • Allen_ww
  • Allen_ww
  • 2016-01-11 19:41
  • 9576

深度长文教你彻底掌握C++/C指针

一.基础C++或者C里面最容易让人糊涂应该是指针了,不管是初学者甚至是有经验的童鞋有时候在用指针的时候也会出现一些很隐蔽的错误. 指针本身就是一个很绕的概念,而指针又能够和很多的结构比如数组(二维数组),字符串,内存分配和管理等等一些联系起来变成更加绕的概念.所以基础不好的同学常常会犯一些很无厘头...
  • xierhacker
  • xierhacker
  • 2016-09-13 19:49
  • 8397

C++指针的理解

我们知道,在计算机内存中可以通过变量名称作为标识符访问变量。这种方法,程序不需要关心数据在内存的物理地址;无论何时涉及变量时,它简单地使用标示符。 对于C++程序,计算机的内存就像一系列内存单元的组合,这些单元的大小是1个字节,具有独立的地址。这些单字节内存单元被按照一定的方式组织起来,允许表述更...
  • shenwanjiang111
  • shenwanjiang111
  • 2016-11-12 18:41
  • 558

c++ 指针赋值

<br />一、一级指针<br /> <br />char *a="a";<br />char *b="b";<br /> <br />a=b;//这个是b把...
  • jackmacro
  • jackmacro
  • 2011-01-14 10:11
  • 2759
    个人资料
    • 访问:274823次
    • 积分:6219
    • 等级:
    • 排名:第4739名
    • 原创:158篇
    • 转载:0篇
    • 译文:0篇
    • 评论:24条