20191221-指针题
代码1:
-
#include "stdafx.h"
-
#include "iostream"
-
#include "string"
-
using namespace std;
-
int main()
-
{
-
int a=5;
-
cout<<&a<<endl;
-
a=6;
-
cout<<&a<<endl;
-
int *p=&a;
-
cout<<p<<endl;
-
*p=1;
-
cout<<p<<endl;
-
cout<<a<<endl;
-
}
以上是一道指针题,假如第一个COUT的输出结果是:0033EFD0,请写出后4个COUT分别输出的内容: -
-
0033EFD0 0033EFD0 0033EFD0 1
-
运行结果:
解题思路:
指针是有数据类型的,如上面代码中的INT,*P指向变量a的内存地址启始处,等同于&a,所以改变*p的值就是改变a的值。
代码2:
-
#include "stdafx.h"
-
#include "iostream"
-
#include "string"
-
using namespace std;
-
void jzj(int &a);
-
int main()
-
{
-
int jzj1=10;
-
jzj(jzj1);
-
cout<<jzj1<<endl;
-
}
-
void jzj(int &a)
-
{
-
int *b=&a;
-
*b=17;
-
}
-
输出: 17
解题思路:
由于传进jzj方法的参数是jzj1的地址,然后在方法中定义一个int类型的指针*b指向参数的地址,修改 *b的值,变量a(jzj1)的值也会相应修改,所以输出17 。