指针记录变量的地址
定义 :数据类型 * 变量名
赋值 :int *p=&a
int *p=&a
p表示指针所指向的内存地址
*p表示内存所指向的内存地址中的值
int main(){
//1.定义指针 指针记录变量的地址
int a = 10;
int * p; // int *p
p =&a; //赋值
cout << p<< endl;
//2.指针的使用 解引用的方式*p
*p = 10;
cout << a << endl; //10
cout << *p << endl;//10
system("pause");
return 0;
}
指针也是种数据类型 在32位操作系统中 所有的指针类型都占四个字节
int main() {
int a = 10;
int* p = &a;
//32位操作系统 不论是什么指针类型 指针空间所占内存大小为四个字节
cout << "sizeof(int*)=" <<sizeof(int *) << endl; //4
cout << "sizeof(int*)=" << sizeof(float *) << endl;
cout << "sizeof(int*)=" << sizeof(double *) << endl;
system("pause");
return 0;
}
空指针和野指针都不可以访问
int main() {
//1.空指针用于给指针进行初始化
int* p = NULL;
//2.空指针不可以进行内存访问
//0-255之间的内存编号是系统占用的
//cout << *p << endl;//不可访问
//野指针
int* p = (int*)0X1100;
//cout << *p << endl;
system("pause");
return 0;
}
const int *p; //常量指针 可以改变指针指向 所指向的值不可改变
int* const p; //指针常量 可以改变指针指向的值 不可改变指针的指向
const int* const p;//const既修饰指针又修饰常量 都不可以改变
利用指针元素访问数组
int main() {
//利用指针访问数组元素
int a[] = { 1,2,3,4,5 };
int* p = &a[0]; //int *p=a;
cout << "访问数组的第一个元素: " <<*p << endl;
//遍历访问数组只需 P++
system("pause");
return 0;
}
指针作为形参可以改变实参的值
//值传递
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
cout << "swap函数中的值:a= " << a <<" b="<<b << endl;
}
//地址传递 指针作为形参可以改变实参的值
void swap2(int* p, int* q) {
int temp = *p;
*p = *q;
*q = temp;
cout << "swap2函数中的值" << "a=" << *p << " b=" << *q << endl;
}
int main(){
int a = 10;
int b = 20;
//值传递
swap(a, b);
cout <<"主函数中: "<< "a=" << a ;
cout << " b=" << b<<endl;
cout << "---------------------" << endl;
//地址传递
swap2(&a, &b);
cout << "主函数中: " << "a=" << a;
cout << " b=" << b << endl;
cout << " " << endl;
system("pause");
return 0;
}
运行结果
指针作为形参可以改变实参的值
原文:https://www.cnblogs.com/panq/p/14829626.html