C++基础--指针<一>

71 阅读1分钟

指针的含义

指针是一个其值为地址的变量。(就是一个存储地址的变量)

(指针变量所存的内容就是内存的地址编号 !)

所以,要养成一种条件反射,看到指针首先不是想到他能够指向哪里,而是想到这个变量存放的是一个地址,是这个地址指向哪里哪里.(比如,char类型的变量中存放的是char类型的数据.int变量中存放的是int类型的数据.指针中存放的是一个地址!!!)

  • &(取址运算符)
  • *(间接访问运算符/解引用指针)
#include <iostream>
using namespace std;
int main()
{
   int a=5;
   double b=10.4;

   cout<<"Address of a:"<<&a<<endl;
   cout<<"Address of b:"<<&b<<endl;

   cout<<"a:"<<*(&a)<<endl;
}

273a09eceaa1b1f963e02b2b891e87a8.png

声明指针的模板:

指向地址的数据类型 * 指针变量名; int * leo;

指针数组

  • 指针的数组(注意:【】优先级比较高)
    数组 T* t[]; eg:int * a[4]

  • 数组的指针
    指针 T (*t)[] eg :int (*b)[4]

const与指针

关于const修饰的部分: 1、看左侧最近的部分 2、如果左侧没有 则看右侧

char strHello[] = {"hello"};
char const *pStr1 = "hello";
char *const pStr2="hello";
char const *const pStr3 = "hello";
pStr1=strHello;
//pStr2=strHello; pStr2是不可改变的
  • 指向const的指针:const修饰char,pStr1 这个地址可以随便指,但是地址里面保存的值却是不能改变。
  • const 指针  const修饰*,  首先是一个指针,只不过这个指针是 const 类型的,也就是这个指针变量的地址,只能在初始化之后,就一直指向这个地址,地址所被保存的内容是可变的。