您的位置:首页 > 其它

结构体参数的传递以及如何修改指针参数的值

2010-09-12 04:44 232 查看
1. 我们在看代码的时候,会注意到,如果函数的参数需要结构体的时候,一般是传递结构体指针,而不是传递结构体,这一点在Windows API中几乎都是如此,凡是用到结构体的地方,都是用它的指针来做参数的,这是什么原因呢?最近发现,如果直接传结构体,编译器会把结构体的各个成员都一一压栈,而如果传递的是结构体指针的话,则只压一个结构体的指针就可以了,大为简洁

 

2. 有这样一个函数

void foo(char* p)
{
p++;
}


问,在这个函数执行完,返回之后,p的值会被改变吗?

答案是否,因为我们传递指针的目的是为了修改指针指向的地址的值,而不是指针的值,

那么,如果想在函数里修改指针的值该怎么做?对了,只要把指向指针的指针传进来就可以了

如下

void foo(char** p)
{
*p++;
}

foo(&pointer);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编译器 windows api