指针修改变量的值,以及指针交换两个数字的值的问题
2016-12-26 11:04
375 查看
#include <iostream>
using namespace std;
// 可以实现交换数值,但是不知道为什么?
//先读完程序然后告诉你。
void swap(int *a,int *b){
int *t;
t=a;
a=b;
b=t;
}
void main(){
int a=10;
int b=20;
swap(&a,&b); //不能实现交换
swap(a,b);
cout<<a<<endl; //20
cout<<b<<endl; //10
system("pause");
}
//答案就是:库函数的存在,你的函数名称和库函数名称一样了,那么这样默认调用的是库函数。
//这样实现了交换的两个数字值的功能,又没有调用自己写的方法。
//这个实际上改变的就是地址了。
void hah(int *a,int *b){
int *t=a;
a=b;
b=t;
}
int main()
{
int a=10;
int b=20;
hah(&a,&b);
cout<<a<<endl;
cout<<b<<endl;
system("pause");
}
//不能交换两个数字的值
void swap1(int *a,int *b){
int *t;
t=a;
a=b;
b=t;
}
void main(){
int a=10;
int b=20;
swap(&a,&b); //不能实现交换
cout<<a<<endl; //10
cout<<b<<endl; //20
system("pause");
}
//通过引用改变两个数的值
void swap2(int &a,int &b){
int c=a;
a=b;
b=c;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a=10;
int b=20;
swap(a,b);
cout<<a<<endl; //20
cout<<b<<endl; //10
system("pause");
}
//通过指针改变变量的值
void fun1(int *p){
(*p)++;
}
void main(){
int a=100;
fun1(&a);
cout<<a<<endl;//101
system("pause");
}
//实现地址的移动
void fun2(int *&a){
++a;
}
void main(){
int a=100;
int *b=&a
fun1(b);
cout<<a<<endl;//100
cout<<b<<endl;//输出的内容不确定
system("pause");
}
//通过引用改变值
void fun3(int &a){
++a;
}
int main(){
int a=100;
fun3(a);
cout<<a<<endl;
}
using namespace std;
// 可以实现交换数值,但是不知道为什么?
//先读完程序然后告诉你。
void swap(int *a,int *b){
int *t;
t=a;
a=b;
b=t;
}
void main(){
int a=10;
int b=20;
swap(&a,&b); //不能实现交换
swap(a,b);
cout<<a<<endl; //20
cout<<b<<endl; //10
system("pause");
}
//答案就是:库函数的存在,你的函数名称和库函数名称一样了,那么这样默认调用的是库函数。
//这样实现了交换的两个数字值的功能,又没有调用自己写的方法。
//这个实际上改变的就是地址了。
void hah(int *a,int *b){
int *t=a;
a=b;
b=t;
}
int main()
{
int a=10;
int b=20;
hah(&a,&b);
cout<<a<<endl;
cout<<b<<endl;
system("pause");
}
//不能交换两个数字的值
void swap1(int *a,int *b){
int *t;
t=a;
a=b;
b=t;
}
void main(){
int a=10;
int b=20;
swap(&a,&b); //不能实现交换
cout<<a<<endl; //10
cout<<b<<endl; //20
system("pause");
}
//通过引用改变两个数的值
void swap2(int &a,int &b){
int c=a;
a=b;
b=c;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a=10;
int b=20;
swap(a,b);
cout<<a<<endl; //20
cout<<b<<endl; //10
system("pause");
}
//通过指针改变变量的值
void fun1(int *p){
(*p)++;
}
void main(){
int a=100;
fun1(&a);
cout<<a<<endl;//101
system("pause");
}
//实现地址的移动
void fun2(int *&a){
++a;
}
void main(){
int a=100;
int *b=&a
fun1(b);
cout<<a<<endl;//100
cout<<b<<endl;//输出的内容不确定
system("pause");
}
//通过引用改变值
void fun3(int &a){
++a;
}
int main(){
int a=100;
fun3(a);
cout<<a<<endl;
}
相关文章推荐
- 交换两个变量效率问题
- 使用指针交换两个整形变量的值
- 两个变量里的数字进行交换,不依赖第三个变量
- 067.Pointer 使用指针交换两个变量的值
- c_指针_通过指针交换两个变量的值且不使用新变量
- 解决WinForm中ComboBox控件的“设置"DataSourse”属性后无法修改项集合”以及两个不相关联的ComboxBox控件实现数据列表显示不可实现的问题
- Java里不用第三变量完成两个数字的交换
- 解惑——用指针交换两个数字时所犯的错误
- 【c/c++笔试题一】const变量通过指针修改问题
- (转)const变量通过指针修改问题
- [c语言笔记]关于指针操作中使用异或交换两个变量的值
- 交换两个变量的值的方法-----从简单问题入手
- 不使用第三个变量交换两个数字
- 交换两个变量以及不用第三个变量交换两个变量
- 不使用临时变量的情况下,两个变量之间交换值的问题
- 1)算术运算;2)指针地址操作;3)位运算 不使用第三方变量交换两个变量的值
- 分享:程序笔试题-const变量通过指针修改问题
- 指针交换两个变量
- 用函数交换两个变量的值(C语言指针)
- 不利用第三个变量交换两个数字的值