猿问

请问,给pnum赋值为num的地址,返回类型为int*吗?

#include <iostream>
using namespace std;
int incr10(int *pnum);

int main(void)
{
int num(9);
int *pnum = #
int result = incr10(pnum);
cout << endl << "incr10(num) = " << result << endl
<< "num = " << num << endl;
system("pause");
return 0;
}

int incr10(int* pnum)
{
*pnum += 10;
return *pnum;
}

请问:1. int *pnum = #这行的意思是:给pnum赋值为num的地址,返回类型为int*吗?
2. pnum是一个地址,*pnum是一个值?incr10(pnum)的实参是个地址和int incr10(int* pnum)的形参是个int值对不上号啊,怎么解释?
度娘把代码吞了。



皈依舞
浏览 359回答 3
3回答

侃侃无极

从你的问题中可以看出你对指针的运用还很模糊。指针的定义就像int a为定义一个int类型的变量a.int * pnum 你这样看 (int *) pnum 代表pnum是一个指向int数据类型的指针。int *pnum = # //定义一个int类型指针pnum 并把num的地址赋给pnum。指针的使用使用时与定义不一样,这时的*不能和定义时的* 混乱为一谈。* pnum是取该指针指向的数据的值。int incr10(int* pnum) 这样看 int incr10((int*) pnum)而不是int incr10(int (* pnum)) 你就很清楚了。这个函数的参数是int * 所以incr10(pnum)OK。指针是C语言比较精髓的地方,你现在对指针使用过程中有很多还不是很清楚。仔细看一下书,仔细。多看,多写,多想,会有很多收获的曾经的我就是这么过来的。

杨魅力

BaseEllipse(double x0=0,double y0=0):x(x0),y(y0){}就是这个类的构造函数,冒号后面的是类成员的初始式。如果类成员中有类对象,则在冒号后面可以一个一个地调用类对象的构造函数。1 对于double这种类型,可以选择使用初始式(就是上面的方法)或者使用赋值(就是在函数体里 面对 x y 进行赋值);2 但是前者的方式(冒号后面跟初始式)对于a 没有默认构造函数的对象b const成员和引用成员是必不可少的。3 使用初始式除了可以使得初始化的情况更加明显,有时候还可能带来效率上的优势,例如要初始化的对象是string的时候。

芜湖不芜

int *pnum = &num 就是取num地址给pnumnt incr10(int* pnum)的形参不是int,而是int*,是个地址
随时随地看视频慕课网APP
我要回答