对于采用指针参数的函数,我是否在通话中传递地址?

时间:2013-12-11 16:52:00

标签: c pointers parameter-passing

例如:

void Sample_Function(char * ptr){ //Stuff }

void Some_Other_Function(){
    char *p;
    p = malloc(sizeof(char)*5);
    // Is this correct?
    Sample_Function(p);
    // Or this?
    Sample_Function(*p);
}

由于free()接收地址而不是指向字节,我猜第一个选项是正确的吗?

此外,对于返回指针的函数:

// Is this correct?
return p;
// Or this?
return *p;

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

p的类型为char*,* p的类型为char。所以Sample_Function(p)是一个有效的电话。 如果你的职能是:

char* Some_Other_Function(){ //things}

然后,出于同样的原因,您应该返回p而不是*p

答案 1 :(得分:0)

如果Sample_Function(p)是指针,则应将其称为p,如果Sample_Function(&a)不是指针,则应将其称为a

如果函数返回一个指针,它将返回一个地址,因此您应该使用return p;return &a;