【嵌入式——C++】指针

【嵌入式——C++】 指针

  • 定义
  • 使用
  • 空指针
  • 野指针
  • const修饰指针
  • 指针和数组
  • 指针和函数

定义

指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。

//数据类型* 指针变量 
int * p;

使用

int a = 10;
//定义指针
int* p;
//指针记录变量a的地址
p = &a;
cout << "指针a的地址:" << &a << endl;  //0053F754
cout << "指针p的地址:" << p << endl; //0053F754
//使用指针  通过解引用的方式找到指针指向的内存
//指针前加 * 代表解引用,找到指针指向的内存中的数据
*p = 1000;
cout << "a=" << a << endl;  //1000
cout << "*p=" << *p << endl; //1000

空指针

空指针是用于给指针变量进行初始化,空指针是不可以进行访问的。

int * p = NULL;

野指针

没有权力操作的一块内存,在程序中,尽量避免出现野指针。

const修饰指针

常量指针
const修饰指针,指针的指向可以修改,但是指针指向的值不可以修改。

const int * p = &a;

指针常量
const修饰常量,指针的指向不可以修改,指针指向的值可以修改。

int * const p = &a;

又修饰常量
const既修饰指针又修饰常量,指针的指向和指针指向的值都不可以修改。

const int * const p = &a;

指针和数组

int  var[3] = { 10, 100, 200 };
 // 指针中的数组地址
 int* ptr = var;
 cout << "利用指针访问第一个元素:" << *ptr << endl;
 //指针后移4个字节
 ptr++;
 cout << "利用指针访问第二个元素:" << *ptr << endl;

指针和函数

void swap01(int* p1, int* p2) {
 int temp = *p1;
 *p1 = *p2;
 *p2 = temp;
}

//地址传递
int a = 10, b = 20;
swap01(&a,&b);
//如果不想修改实参就用值传递,如果想修改实参,就用地址传递

你可能感兴趣的:(c++,开发语言,qt,物联网,iot)