指针
指针的基本概念
指针的作用:可以通过指针间接访问内存
内存编号是从0开始记录的,一般用十六进制数字表示
可以利用指针变量保存地址
指针-的定义与使用(filename29)
//指针的定义
int a = 10;//定义整形变量a
//指针定义语法:数据类型变量名
int p;
//指针变量赋值
p = &a;//指针指向变量a的地址
或者直接int *p=&a;
cout << &a << endl;//打印a的地址值
cout << p << endl;//打印指针变量p
//指针的使用
//通过操作指针变量指向的内存
//指针前加代表解引用,找到指针指向内存中的数据
p = 1000;
cout << "a" << a << endl;
cout << "p" << *p << endl;
指针所占的内存地址
int a = 0;
int p=&a;
cout<<sizeof(int)<<endl;
cout<<sizeof(p)<<endl;
操作系统不同 指针内存大小不同 在64位操作系统 指针占8个字节大小
指针-空指针和野指针(filename30)
空指针:指针变量指向内存中编号位0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
野指针:指针变量指向非法的内存空间
intp=(int)0x1100
(int*) 是一个类型转换操作,将后面的值强制转换为指向整型(int)的指针类型。也就是说,它将这个整数常量解释为一个内存地址,并且这个地址处存储的是int类型的数据。
指针-const修饰指针(filename31)
常量指针 const修饰指针
const intp =&a;
特点:指针的指向可以修改 但指针指向的值不可以修改
指针常量 const修饰常量
int * const p =&a;
特点 指针的指向不可以改 但指针的值可以改
const修饰常量又修饰指针
const int const p =&a;
指针-指针和数组(filename32)
include
using namespace std;
int main32() {
int arr[10] = { 1,2,3,4,5,6,7,8,9 }; // 数组有10个元素,但只初始化了9个,最后一个为0
int* p6 = arr; // p指向数组的第一个元素
//cout << *p6 << endl; // 输出第一个元素,即1
//p6++;
//cout << *p6 << endl;
for (int i = 0; i < 10; i++) {
cout << *p6 << endl;
p6++;
}
p6 = &arr[3];
cout << *p6 << endl;
system("pause"); // 暂停,等待用户按键
return 0;
}
指针-指针和函数(filename33)
作用:利用指针作函数参数,可以修改实参的值
地址传递提供了访问原始数据的途径,函数可以直接操作原始内存。
指针,数组, 函数
案例(filename34)
如何把数组传入函数体中