不知何缘由,最近总是静不下心来学习,也不知什么缘由,忽然之间,就很想学一下C/C++(我想:"在我颇有兴趣去学习一个东西时候,这不是一件坏事吧",不过我仍是以Java为主),由于很早以前,在我尚未接触过Java时,那时,我对选择学习Java仍是C/C++有一个,有一个什么呢?就是学那个好,那时,Java至关的流行,而C/C++又比较难学,特别是C++中的指针,不少人说,至关的复杂,因此我最终选择自学Java.
这两天,学了指针,感受并非像传说的触不可及(可是它确实有点挠,由于指针吗,常常对一个变量指来指去),我以为,这要规功于我学习了Java,理解了面向对象的含义,若是你理解了什么是对象,如何运用,并了解了引用传递,我认为学习指针,不是难事(若是我说的不对,不要见笑),由于对象也是存在内存的地址中,而引用传递,始终是指向那个内存地址。
上个人第一个C++程序(在这里要先感谢,贺老师无私的奉献知识)
ios
#include <iostream>编程
using namespace std;
int mainyw();
数组
int main()函数
{学习
cout << "指针运算 " << endl;spa
int a, b;指针
int *pointer_1, *pointer_2; //指向整形变量的指针变量对象
pointer_1 = &a; //取a变量的地址内存
pointer_2 = &b;ci
*pointer_1 = 100;
*pointer_2 = 10;
cout << a << " " << b << endl;
cout << *pointer_1 << " " << *pointer_2 << endl;
mainyw();
return 0;
}
int mainyw()
{
int a, b, *p1, *p2, *p;
cin >> a >> b;
p1 = &a;
p2 = &b;
if (a<b)
{
p = p1; p1 = p2; p2 = p;
}
cout << "a=" << a << " b=" << b << endl;
cout << "max=" << *p1 << " min=" << *p2 << endl;
return 0;
}
在mian方法中pointer_1 取了a变量的地址,而后,pointer_1指针赋值为100,这时pointer_1指向的地址就是a变量指向的地址,因此,
输出的结果a=100,b=10, pointer_1 =100,pointer_2 =10.
尽管ab没有再赋值,但数据发生变化,缘由就地址的做用,因此若是a修改成90,指针变量pointer_1 也是90
#include <iostream>
using namespace std;
int main()
{
cout << "指针运算 " << endl;
int a, b;
int *pointer_1, *pointer_2; //指向整形变量的指针变量
pointer_1 = &a; //取a变量的地址
pointer_2 = &b;
*pointer_1 = 100;
*pointer_2 = 10;
cout << a << " " << b << endl;
cout << *pointer_1 << " " << *pointer_2 << endl;
cout << "修改a变量 " << endl;
a=90;
cout << a << " " << b << endl;
cout << *pointer_1 << " " << *pointer_2 << endl;
return 0;
}
咱们知道,一个函数最多就是返回一个值(数,数组或集合,对象),而如今的myswap函数能够改变传入的两个数的内存地址,
把两个数的内存地址互换,就是a变成b,b变成a,这是否是至关于返回了多个数的效果呢?
#include <iostream>
using namespace std;
void myswap(int *p1, int *p2)
{
int t;
t=*p1;
*p1=*p2; //这里把地址进行互换
*p2=t;
}
int main()
{
int *point1,*point2,a,b;
cout << "输入两个数,比较大小 " << endl;
cin>>a>>b;
cout<<"a="<<a<<",b="<<b<<endl;
point1=&a;
point2=&b;
if (a<b){
myswap(point1, point2);
}
cout<<"a="<<a<<",b="<<b<<endl;
cout<<*point1<<","<<*point2<<endl;
}
我最初输入的是2,5,a=2,b=5;myswap函数中把两个数的地址进行互换,这时,指针发生了变化,假如a的地址是x000xf,b的地址是x004xf,
point1 指针原来指向是地址x000xf,如今,是指向了x004xf,而point2指向了x000xf,相应的a.b的值也发生了变化,由于地址改变了,因此,指针传递给myswap的形参,就是引用传递。
可见,指针也是一种多少奇妙的事物,它会让你编程世界多一份意外的风景(若是你运用好的话)