指针的操作

1、p+1

指针变量p,获取a变量的地址后,再加上1,结果会是什么? 直接上码:

#include<iostream>int main()
{int a = 10;int *p;p = &a;std::cout << "p: " << p << "\n";std::cout << "p+1: " << p+1 << "\n";
}

运行结果:

结果解析:

答:注意结果后面的 44 和 48,为什么 p+1 后,44 变成 48 呢?这就是因为p是一个整型指针,p+1 则将其增加一个单位,将我们带到下一个整型地址,因为整数在内存的大小是4个字节。所以,去下一个地址,整数地址就会跳过四个字节,所以,p+1 将p增加四个字节。

你可以使用 sizeof(int); 来查看整型占用内存是多少! 或者试试字符类型,浮点型等等。

(在我之前文章有教这个sizeof()函数的使用)

2、*(p+1)

#include<iostream>int main()
{int a = 10;int *p;p = &a;std::cout << "p: " << p << "\n";std::cout << "p+1: " << p+1 << "\n";std::cout << "*(p+1): " << *(p+1) << "\n";
}

运行结果:

What happen?? *(p+1)等于2293316,这是什么?

答:p+1的地址已经改变了,然后执行*(p+1),也就是执行该地址的值,运行结果来看,实际上它是一个垃圾值,因为我们没有真正给它的整数,这是使用指针算法的C的一个危险的事情。使用指针操作,你可以达到任何地址,而有时这些操作可能会给你的程序带来不必要的行为。

int -> 4个字节

char -> 1个字节

float -> 4个字节

3、

p0 = (char*)p;   强转换指针类型

#include <iostream>int main()
{int a = 2015;int *p;p = &a;std::cout << "size of integer is " << sizeof(int) << "\n";std::cout << "p: " << p << "\n";std::cout << "*p: " << *p << "\n";char *pp;pp = (char*)p;std::cout << "size of integer is " << sizeof(char) << "\n";std::cout << "pp: " << pp << "\n";std::cout << "*pp: " << *pp << "\n";
}

4、

无效指针 void

#include <iostream>int main()
{int a = 2015;int *p;p = &a;std::cout << "size of integer is " << sizeof(int) << "\n";std::cout << "p: " << p << "\n";std::cout << "*p: " << *p << "\n";void *p0;p0 = p;//只能打印地址std::cout << "p0: " << p0 << "\n";//不能打印值std::cout << "*p0: " << *p0 << "\n";
}

5、

指向指针的指针

#include<iostream>
using namespace std;int main()
{int x = 5;int* p = &x;* p = 6;int** q = &p;int*** r = &q;cout << "*p =  " << *p << "\n";cout << "*q =  " << *q << "\n";cout << "**q = " << *(*q) << "\n";cout << "**r = " << *(*r) << "\n";cout << "***r = " << *(*(*r)) << "\n";***r = 10;cout << "x = " << x <<"\n";**q = *p + 2;cout << "x = " << x << "\n";
}

运行结果:


算法和数据结构是程序的第一秘诀,缺之算法和数据结构是编程的最大原因。

C ++ 指针 | 指针的操作_2相关推荐

  1. 【C 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )

    文章目录 一.函数形参使用推荐方法 二.完整代码示例 一.函数形参使用推荐方法 在函数中 , 形参 中的 指针变量 , 不建议直接使用 ; 推荐 在 函数中 , 定义 局部 指针变量 , 接收 形参中 ...

  2. 【C 语言】指针数据类型 ( 指针类型变量 | 使用 * 操作内存 )

    文章目录 一.指针类型变量 二.使用 * 操作内存 一.指针类型变量 指针 也是 变量 , 也占用内存空间 , 可以用于保存 内存地址 ; 测试 指针 变量占用的内存空间大小 : 定义一个 int * ...

  3. C语言数组和指针的理解_在取地址运算上的操作_指针加减操作_a 和a 的区别

    1.一个实例+理论分析 在了解数组和指针的访问方式前提下,下面再看这个例子: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); pr ...

  4. C语言指针的高级操作

    C语言指针的高级操作 指针  指针 在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作. 指向指针的指针 这名字乍一听有点拗口,再次一听就更加拗口了.先看定 ...

  5. checkbox未赋值时获取value是on_C语言中的指针——指针的赋值和指向

    文/Edward 当我们将一个指针变量定义好之后,接下来需要考虑的问题就是如何来使用这个指针变量了.前面学习普通变量的时候,我们知道,一个变量的操作其实就是分成读和写两个步骤.而指针变量在平时使用的时 ...

  6. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

    指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...

  7. C_C++指针指针应用详解

    前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其 ...

  8. 面试准备每日五题:C++(六)——CC++、staticconstextern、sizeof strlen、指针引用、数组指针指针数组函数指针

    文章目录 一.C和C++的区别是什么? 二.关键字static.const.extern作用 三.sizeof和strlen的区别 四.指针和引用的区别 五 .指针数组.数组指针.函数指针 一.C和C ...

  9. C++面试题-指针-指针数组与数组指针

    C++面试题-指针-指针数组与数组指针 问:int (*p)[n]与int *p[n]的区别? 答: int (*p)[n]是数组指针,指向某n个元素所组成的整块的数组,返回值是整型指针类型的. in ...

  10. 对指针的详细认识(一)—— 指针概念+指针类型+野指针+指针运算+二级指针

    文章目录 指针是什么? 指针的定义 指针的大小 指针类型 指针有哪些类型? 指针类型有什么意义? 野指针 野指针的成因 如何避免野指针 指针运算 指针+-整数 指针-指针 指针的关系运算 二级指针 指 ...

最新文章

  1. 成为计算机视觉工程师的第一个月,我都学会了什么?
  2. Please let us know in case of any issues
  3. html动态网页效果代码_教你制作网页的第一步
  4. 计算机相关专业的自我评价,计算机相关专业的学生自我评价
  5. java遍历日期_Java遍历起止日期中间的所有日期操作
  6. 配置使用VCSA自带的备份恢复工具
  7. IntelliJ IDEA 设置Output (输出窗口)窗口字体大小
  8. 2017 Multi-University Training Contest - Team 4:1004. Dirt Ratio
  9. 《OKR工作法》读书笔记(转)
  10. iOS中Navigation中添加自定义Button等UIView
  11. 中国移动手机支付开放平台网站服务协议
  12. Raspberry Pi网络监控
  13. DEM生成等高线及提取等高线3+1种方法
  14. sql server的缺陷 将截断字符串或二进制数据 哪个字段
  15. 小说作者推荐:耳东兔子合集
  16. 用 Python 高效处理大文件
  17. 关于车路协同的几点质疑与回应——天翼交通总经理王劲答记者问
  18. 排斥原理c语言代码,包含排斥原理.ppt
  19. 关于ios低版本在app store下载软件时由于版本低导致不能下载的解决办法
  20. 2003dfs分布式文件服务器,win2003分布式文件系统(dfs)配置方法[图文详解]

热门文章

  1. html中第一行代码,HTML5 CSS3初学者指南(1) – 编写第一行代码
  2. Convolutional networks for fast, energy-efficient neuromorphic computing
  3. (组合数学笔记)Pólya计数理论_Part.3_置换群及其性质
  4. php pdo fetchassoc,pdo执行fetch查询语句,出现500错误,请问应该怎么写
  5. jQuery学习之一---选择器
  6. python可以做表格文档吗_生活中的python-利用python-docx自动生成表格简化工作流程...
  7. 计算机系应用,近距离看专业 计算机专业应用篇
  8. poi读取excel导入mysql_poi读取xlsx表格内容并插入到mysql中,OutOfMemoryError
  9. 计算机开机coms错误,电脑开机提示“CMOS checksum error-Defaults loaded”怎么办?
  10. 结合计算机专业谈创新,计算机专业学生创新能力培养论文