#include <iostream> using namespace std; void main() { int x=10,y=5,*px,*py; px=py; px=&x; py=&y; cout<<"*px="<<*px<<", "<<"*py="<<*py; }
时间: 2024-02-06 16:09:03 浏览: 35
这段代码中存在两个问题:
1. 在第5行中,将未初始化的指针 py 赋值给指针 px,这可能会导致未定义的行为。
2. 在第8行中,main 函数的返回值类型应该为 int,而不是 void。
下面是修改后的代码:
```
#include <iostream>
using namespace std;
int main() {
int x = 10, y = 5, *px, *py;
px = &x;
py = &y;
cout << "*px=" << *px << ", " << "*py=" << *py;
return 0;
}
```
修改后的代码将指针 px 和 py 分别指向变量 x 和 y,并输出它们的值。函数的返回值类型为 int,返回值为 0,表示程序正常结束。
相关问题
C++ [读程序写结果] #include<iostream> using namespace std; class point { public: void poi(int px=10,int py=10) {x=px;y=py;} friend int getpx(point a); friend int getpy(point b); private: int x,y; }; int getpx(point a) { return a.x;} int getpy(point a) {return a.y;} int main() { point p,q; p.poi();q.poi(15,15); cout<<getpx(p); cout<<getpy(p)<<endl; cout<<getpx(q); cout<<getpy(q)<<endl; return 0; }
程序输出结果为:
10 10
15 15
程序分析:
该程序定义了一个名为point的类,其中包含了两个私有成员变量x和y,以及一个公有函数poi()和两个友元函数getpx()和getpy()。
在主函数中,创建了两个point类型的对象p和q,分别调用了poi()函数来给它们的x和y赋值。其中p调用了默认参数,赋值为(10,10),q调用了非默认参数,赋值为(15,15)。
接下来分别输出了p和q的x和y值,调用了getpx()和getpy()这两个友元函数。输出结果符合预期。
/* 交换两个数 请编写函数void swap(int *px,int *py) 与void swap(int &px,int &py),实现主程序中变量a和b值的交换。 输出结果如下: 3 2 2 3 注意: (1)部分源程序已存在文件sy02_2.cpp中。 (2)请勿修改主函数main和其他函数中的任何内容,仅在函数相应的花括号中填写若干语句。 */ #include<iostream> using namespace std; void swap(int *px,int *py)//a b { //******************************* int *p=px; px=py; py=p; //============================= } //void swap(int &px,int &py) //{ ////******************************* //int t=px; //px=py; //py=t; // // ////============================= //} int main() { int a=2,b=3; swap(a,b); cout<<a<<" "<<b<<endl; int c=3,d=2; swap(&c,&d); cout<<a<<" "<<b<<endl; }分析以上代码
以上代码实现了交换两个整数变量的值,并且提供了两种不同的实现方式:指针传递参数和引用传递参数。下面对代码进行分析:
在代码中,主函数中定义了两个整型变量a和b,并且分别赋值为2和3。然后调用swap函数,传递a和b作为参数,实现a和b的值交换。根据函数重载机制,编译器会自动选择正确的函数进行调用,因此在本例中,调用的是void swap(int &px,int &py)函数。函数内部使用了引用传递参数的方式,直接对变量进行操作来进行交换。
交换完成后,输出a和b的值,此时a的值为3,b的值为2。
接着,主函数中定义了另外两个整型变量c和d,并且分别赋值为3和2。然后调用swap函数,传递c和d的地址作为参数,实现c和d的值交换。根据函数重载机制,编译器会自动选择正确的函数进行调用,因此在本例中,调用的是void swap(int *px,int *py)函数。函数内部使用了指针传递参数的方式,通过指针间接访问变量的值来进行交换。
交换完成后,输出a和b的值,此时a的值为3,b的值为2。需要注意的是,在输出c和d的值时,输出的应该是c和d的值,而不是a和b的值。
综上所述,该程序实现了交换两个整数变量的值,并且提供了两种不同的实现方式。但是需要注意输出的变量名应该和实际调用的变量名相对应。