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内容不会变。

posted @ 2022-09-29 21:28  SweepyZhou  阅读(45)  评论(0编辑  收藏  举报