下列语句定义px为指向int类型变量x的指针,正确的是()。 A. int x, *px = x; B. int x, *px = &x; C. int *px = &x, x; D. int x, px = x;
时间: 2024-06-02 21:12:54 浏览: 149
正确答案是B. int x, *px = &x;
解析:
- 选项A中,px是指向int类型变量x的指针,但是x未被取地址符&所取地址,因此编译会报错。
- 选项B中,px被定义为指向int类型变量x的指针,并且通过取地址符&取得了x的地址,是正确的。
- 选项C中,px被定义为指向int类型变量x的指针,但是x在指针定义之后才被定义,因此编译会报错。
- 选项D中,px被定义为int类型的变量,而不是指针类型,因此编译会报错。
相关问题
设int x;,则经过()后,语句*px=0;可将x值置为0。 (2分) A. int * px; B. const int * px=&x; C. int * const px=&x; D. int const * px=&x;
正确答案是 C. int * const px=&x;
解析:在选项 C 中,px 是一个指向 int 类型的常量指针,它被初始化为指向 x 的地址。由于 px 是一个常量指针,因此 px 的指向不能更改,但是可以通过 px 解引用来修改 x 的值。因此,在语句 *px=0;执行后,x 的值将被置为 0。
/* 交换两个数 请编写函数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的值。
综上所述,该程序实现了交换两个整数变量的值,并且提供了两种不同的实现方式。但是需要注意输出的变量名应该和实际调用的变量名相对应。
阅读全文