java定义一个指针类型变量赋值吗,JAVA程序员学习C++之指针

1.指针定义

指针变量存储变量内存中的起始地址,相当于Java中的引用。由于仅仅存储了内存的起始地址,所以要正确的存取指向数据,还必须知道数据所占用的字节数,所以声明指针时还必须声明类型。

指针的声明方式为:

类型   *变量名;

比如: int *p; float  *p1;

1.1 为指针赋值

为指针型变量赋值使用运算符&(获取变量在内存中的地址),如下式:

int a=5,*pointer;

pointer = &a;

当然两个指针型变量可以相互赋值:

int *pointer2=NULL;

pointer2 = pointer;

void main()

{

int y=15, *ip;

ip = &y; //其中ip是int型的指针类型,存放了指向数据(y)的首地址

cout << "ip=" << ip << " &y=" << &y << " *ip=" << *ip;

cout << "\n";

*ip = 10;//*p是指针声明的指向数据类型即int型,所以可以直接赋值

cout << "&y=" << &y << " y=" << y << " *ip=" << *ip;

}

打印结果:

ip=00A2FC40 &y=00A2FC40 *ip=15

&y=00A2FC40 y=10 *ip=10

在C++中结构体和类变量的赋值操作对应的是对象间的浅拷贝,这一点和JAVA不同(JAVA中赋值就是引用地址的变化),如果使用指针可以做到和JAVA一样的赋值效果

struct student{

char name[20];

char id[10];

int age;

float score;

};

void main()

{

student st1, st2, *prst, *prst2;

st1.age = 10;

st2 = st1;//对象间的浅拷贝

st2.age = 12;

prst = &st1;

prst2 = &st2;

cout << "prst=" << prst << " prst2=" << prst2;//地址不同

cout << " st1.age=" << st1.age << " st2.age=" << st2.age << "\n";//值也不同

prst->age = 12;

cout << "st1.age=" << st1.age << " prst.age=" << prst->age << "\n";//值相同

}

输出结果:

prst=0091FD88 prst2=0091FD58 st1.age=10 st2.age=12

st1.age=12 prst.age=12

1.2 函数指针

在C++中指针同样可以指向函数。函数指针最大的作用是把一个函数作为参数传递给另一个函数。如下例所示:

#include

using namespace std;

int add(int a, int b){

return a + b;

}

int subtraction(int a,int b){

return a - b;

}

/*

*形参为函数指针类型

*/

int operation(int x, int y, int(*mfun)(int, int)){

return (*mfun)(x,y);//调用函数mfun

}

void main(){

//声明函数指针minus指向subtraction

int(*minus)(int, int) = subtraction;

int m, n;

m = operation(4, 5, add);

n = operation(20, m, minus);

cout << n;

}

输出结果为:

11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值