C++指针

作者: JuliusL | 来源:发表于2020-05-08 20:58 被阅读0次

一言以蔽之: 指针能间接的访问变量的内存,进行读和写的操作。

定义指针

数据类型 * 指针变量名

int a = 0;
int * p; //定义指针
p = &a; //指针记录变量a的地址

使用指针

可以通过解引用的方式来找到指针指向的内容
指针前加 * 代表解引用,找到指针指向的内存中的数据

*p = 1000; //这段代码会把 a 变量里的值也修改
cout << *p << endl;//访问a的数据

指针所占内存空间

32位操作系统:占4个字节空间
64位操作系统:占8个字节空间

cout << sizeof(int *) << endl;

空指针和野指针

空指针和野指针都不是我们申请的空间,因此不能访问

空指针

定义:指针变量指向内存中编号为0的空间。
用途:初始化指针变量。
注意:空指针指向的内存是不可以访问的。
0~255之间的内存编号是系统占用的,因此不可访问

int * p = NULL;
*p = 100;//空指针不可访问, nullptr

野指针

定义:指针变量指向非法的内存空间
内存地址没有申请是不可以访问的!!!

int * p = (int *)0x1100;
cout << *p << endl;

const修饰指针

const修饰指针有三种情况:
1,const修饰指针——常量指针
2,const修饰常量——指针常量
3,const既修饰指针,又修饰常量

1,常量指针(const int * p = &a)

指针的指向可以修改,但是指针指向的值不可以修改

int a = 10;
int b = 20;
const int * p = &a;
*p = 20;//错误,指针的值不可以改
p = &b;//正确,指针指向可以改

2,指针常量(int * const p = &a)

值可以改,但是指向不可以改

int a = 10;
int b = 20;
const int * p = &a;
*p = 20;//正确,指针的值可以改
p = &b;//错误,指针的指向不可以改

3,const既修饰指针,又修饰常量

指针的指向和值都不可以修改

int a = 10;
int b = 20;
const int * p = &a;
*p = 20;//错误,指针的值不可以改
p = &b;//错误,指针的指向不可以改

指针和数组

指针在数组中利用+1可以进行偏移。

int arr[] = {1,2,3,4,5,6,7,8,9,10};
int * p = arr;
for (int i = 0; i<10; i++) {
    cout << *p << endl;
    *p++;
}

指针和函数

利用指针可以做地址传递

void swap(int * a,int * b){
  int temp = *a;
  int *a = *b;
  int *b = temp;
}
int a = 10;
int b = 20;
swap(&a,&b);

相关文章

  • C++知识点

    C++基本方法: C++ memcpy C++基本特性: C++引用(vs指针) C++指针 C++封装: 将...

  • C++ 指针常量、常量指针和常指针常量

    参考:C++ 指针常量、常量指针和常指针常量

  • Java基础

    Java和C++的区别?a. Java没有指针。c++可以通过指针直接操作内存,但这个动作是危险的,指针引起的操作...

  • Jna send pointer pointer to c++

    目的: 有这样一个需求,java通过jna传递指针数组给c++,或者指针的指针 解决方案: c++ : 声明 vo...

  • C++ 指向类的指针

    原文地址:C++ 指向类的指针 一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • C++函数指针和Swift的函数对象

    C++函数指针和Swift的函数对象 在C++中学习函数指针式非常痛苦的事情,而在Swift里面学习函数指针则是非...

  • [C++之旅] 16 对象指针/对象成员指针/this指针

    [C++之旅] 16 对象指针/对象成员指针/this指针 一、对象指针 对象指针指向堆中地址 对象指针指向栈中地...

  • C++ 、java 和 C# 的区别

    一、基础类型 c++: ** java:** C#: 二、指针 1.java 是没有指针这个概念,c++ 和 c#...

  • 静心学习之路(7)——C++干架用知识

    善用书籍后自带的单词索引 指针、引用、数组、内存。《C++ Primer 5th》2.3.2——指针《C++ Pr...

网友评论

      本文标题:C++指针

      本文链接:https://www.haomeiwen.com/subject/fehqnhtx.html