c++之指针入门
简介:指针是c和c++的一个重要概念.正确和灵活的运用它,可以使程序简介、高效。
什么是指针
在程序定义了一个变量,编译时就给这个变量分配内存单元。(根据变量类型分配一定的长度空间)
&是取地址运算符;例如:&i 指向 变量i的地址;
一个变量的地址称为该变量的指针;//指针变量->专门用来存放地址(即指针)的变量
变量和指针
2.1 定义指针变量
int * point_1; //定义存放整数类型变量的指针变量
float * point_2; //定义存放浮点类型变量的指针变量
一般形式:
基本类型 * 指针变量名;(即在变量前加表示该变量为指针变量,且“”不是指针变量的一部分) ==》 指针变量一般被分配4个字节
2.2 引用指针变量实例:
#include <iostream>
using namespace std;
int main( )
{
int a = 1;
int * point_1 = &a;
cout << "a的值是" << a << endl;
cout << "a的值是" << *point_1 << endl;
return 0;
}
运行结果:
拔高:此时 & * point_1 和 * & point_1 代表什么含义?
“&”和”*”的优先级相同,且按自右向左结合。
因此 & * point_1 先 * point_1,再 &,即变量a的地址。
* & point_1 ⇒ * & a ⇒ a;(已执行”point_1=&a”)
2.3 用指针作函数参数
函数的参数可以使用指针类型。作用是将变量的地址传给调用函数的形参。
实例:
#include <iostream>
using namespace std;
int main( )
{
void swap(int * a, int * b); //声明函数
int i1 = 100; //定义i1
int i2 = 999;
cout << "i1交换前为" << i1 << endl;
cout << "i2交换前为" << i2 << endl;
swap( &i1, &i2); //传入指针
cout << "i1交换后为" << i1 << endl;
cout << "i2交换后为" << i2 << endl;
}
void swap(int * a, int * b) //利用指针交换值
{
int temp;
temp = * a;
* a = * b;
* b = temp;
}
运行结果:
(有过java基础的同学此时一定觉得很神奇,哈哈哈)
⇒ 下一节(数组与指针)