小弟对c语音中的指针还是很模糊;现在把自己的一个理解写出来,请大家帮忙看看理解的对不对?
比如函数
[mw_shl_code=c,true]void arm_sin_cos_f32(
float32_t theta,
float32_t * pSinVal,
float32_t * pCosVal)[/mw_shl_code]
里面的三个参数中,后边两个是带*的,分别为*pSinval和*pCosval,这两个参数是指针参数,也就是说将来调用此函数的时候,后边两个参数传入的应该是地址,对吗?(我理解的是指针即为地址),如果正确的话,那么*pSinval和*pCosval也就是代表地址了?但是在此函数内部,*pSinval和*pCosval并没有当做地址,而是当作这两个地址里面的内容了;如下代码所示:
[mw_shl_code=c,true] /* Calculation of sine value */
*pSinVal = y0 + y1;
/* Calculation of cosine value */
*pCosVal = y2 + y3;[/mw_shl_code]
请问这是怎么回事呢?在函数入口的地方*pSinval和*pCosval代表要传入地址,但是内部,其二者却不是地址,pSinval和pCosval却变成了地址?
难道,在函数传入的时候,加*只是为了表示这是指针变量,需要传入地址?但是*pSinval和*pCosval并非地址?谢谢
请大家不吝赐教;谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在内部还是地址,并把运算结果存入这两个地址。
建议回炉重修C语言。
http://c.biancheng.net/cpp/html/72.html
void arm_sin_cos_f32(float32_t theta, float32_t * pSinVal,float32_t * pCosVal)
这个函数有三个入参:
第一个是float32_t类型的变量,变量名为theta,也就是用float32_t 定义了一个名为theta的变量;
第二个入参这样理解 float32_t (*pSinVal),和第一个参数一样,可以理解为用float32_t定义了一个名为(*pSinVal)的变量,因为“*”是取值符,所以pSinVal就是指针,而这个(*pSinVal)整体就是变量。
第三个同上。
总结就是,pSinVal是指针,*pSinVal是变量。
这个仅是个人对这个问题帮助理解的方法,可能与C本质不同。
---------------------------------
谢谢您的指点,感觉很受用,谢谢
一周热门 更多>