/*
1.在定义指针变量时必须指定基类型
因为不同的类型在计算机中占用的字节数,存储方式都是不一样的。
例如:使指针移动一个位置,或使指针值加1,这个1代表什么呢?
如果指针是指向一个整型变量的,那么“使指针移动一个位置”意味着移动4字节
“使指针加1”意味着使地址值加4个字节。
如果使用的是一个双精度型的变量,则增加8而不是4。
2.不能用一个整数给一个指针变量赋值
*/
//指针初级
#include<iostream>
#include<cstdio>
using namespace std;
void swap(int *p1,int *p2)
{
int t;
t=*p1;//应该将*p1的值赋给与*p1值相同类型的才行
*p1=*p2;
*p2=t;
}
int main()
{
int a=10,b=100;
int *p,*q;
p=&a;//取地址符,把变量a的地址赋给p
q=&b;
cout<<"原始值:"<<endl;
cout<<"a="<<a<<",b="<<b<<endl;
cout<<"*p="<<*p<<",*q="<<*q<<endl;
*p=22;//通过改变*p的值,同时也会改变p指向的变量a的值
*q=2;
cout<<"通过指针赋值后:"<<endl;
cout<<"a="<<a<<",b="<<b<<endl;
cout<<"*p="<<*p<<",*q="<<*q<<endl;
swap(p,q);//用指针变量做实参
cout<<"交换后:"<<endl;
cout<<"a="<<a<<",b="<<b<<endl;
cout<<"*p="<<*p<<",*q="<<*q<<endl;
int *s;
if(a<b)
{
s=p;
p=q;
q=s;
}
cout<<"a="<<a<<",b="<<b<<endl;
cout<<"max="<<*p<<",min="<<*q<<endl;//只改变了p与q指针变量的指向,使p指向max,q指向min
system("pause");
return 0;
}