为什么这总是返回一个(零)或NULL指针?即使指针A不是NULL指针?
struct example *doSomething(struct example*, struct example*);
struct example *pointerA;
struct example *pointerB;
...
main(){
...
doSomething(pointerA,pointerB);
...
}
struct example* doSomething(struct example *pointerA,struct example *pointerB)
{
...
return pointerA;
}
答案 0 :(得分:3)
你的问题确实没有足够的代码,但这一行
doSomething(pointerA,pointerB);
无论pointerA
是什么类型,都无法在C中更改pointerA
。所以如果你试图在函数内部进行更改,你应该做
pointerA = doSomething(pointerA, pointerB);
或传递指向指针的指针
...
doSomething(&pointerA, pointerB);
...
}
struct example* doSomething(struct example **ppa, struct example *pb)
{
...
*ppa = something;
}
我认为主要的困惑来自两点:
答案 1 :(得分:0)
这是一个你可能会觉得有用的小例子
#include <stdio.h>
struct myexample {
int a;
int b;
};
typedef struct myexample example;
example add(example *first, example *second) {
example retval;
retval.a = first->a + second->a;
return retval;
}
int main() {
example x1,x2,result;
x1.a=4;
x2.a=3;
result=add(&x1,&x2);
printf("%d", result.a);
return 0;
}
请注意:
&
将结构的地址作为参数传递给函数