C++指针入门
C++指针入门
C++中变量位置
#include <iostream>
using namespace std;
int main ()
{
int var1;
char var2[10];
cout << "var1 变量的地址: ";
cout << &var1 << endl;
cout << "var2 变量的地址: ";
cout << &var2 << endl;
return 0;
}
输出:
var1 变量的地址: 0xbfebd5c0
var2 变量的地址: 0xbfebd5b6
得出第一条规律
&变量名
可以返回变量的存储地址
C++中指针的声明
int *ip; /* 一个整型的指针 */
double *dp; /* 一个 double 型的指针 */
float *fp; /* 一个浮点型的指针 */
char *ch; /* 一个字符型的指针 */
#include <iostream>
using namespace std;
int main ()
{
int var = 20; // 实际变量的声明
int *ip; // 指针变量的声明
ip = &var; // 在指针变量中存储 var 的地址
cout << "Value of var variable: ";
cout << var << endl;
// 输出在指针变量中存储的地址
cout << "Address stored in ip variable: ";
cout << ip << endl;
// 访问指针中地址的值
cout << "Value of *ip variable: ";
cout << *ip << endl;
return 0;
}
输出:
Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20
利用指针实现swap()
//correct code
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
//wrong code
void swap1(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
void swap2(int *a,int *b)
{
int *temp;
temp=a;
a=b;
b=temp;
}
下面两段代码都有问题;
第一段代码直接调用的a和b,函数无法对值进行修改
改成inline void就可以了
第二段代码temp也是指针,交换了由副本指向的内容,但a,b内容不会变。