gpt4 book ai didi

c - C中的直接调用与间接调用

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:39 24 4
gpt4 key购买 nike

我是 C 语言的新手,我正在阅读有关指针如何“指向”另一个变量地址的内容。所以我尝试了间接调用和直接调用并收到了相同的结果(正如任何 C/C++ 开发人员所预料的那样)。这就是我所做的:

int cost;
int *cost_ptr;

int main()
{
cost_ptr = &cost; //assign pointer to cost
cost = 100; //intialize cost with a value
printf("\nDirect Access: %d", cost);
cost = 0; //reset the value
*cost_ptr = 100;
printf("\nIndirect Access: %d", *cost_ptr);
//some code here

return 0; //1
}

所以我想知道使用指针的间接调用是否比直接调用有任何优势,反之亦然?一些优势/劣势可能包括速度、执行操作消耗的内存量(很可能相同但我只是想把它放在那里)、安全性(比如悬挂指针)、良好的编程习惯等。
1有趣的是,我正在使用 GNU C 编译器 (gcc),它仍然可以在没有 return 语句的情况下进行编译,并且一切都符合预期。可能是因为如果你忘记了,C++ 编译器会自动插入 return 语句。

最佳答案

间接调用和直接调用用在不同的地方。在您的示例中,首选直接调用。使用指针的一些原因:

  • 将大型数据结构传递给函数时,可以传递指针而不是复制整个数据结构。
  • 当您希望一个函数能够修改调用函数中的一个变量时,您必须传递一个指向原始变量的指针。如果您按值传递它,被调用的函数将只修改一个副本。
  • 当您不确定要在编译时传递哪个值时,您可以在运行时设置一个指向正确值的指针。
  • 动态分配内存块时,您必须使用指针,因为存储位置直到运行时才知道。

关于c - C中的直接调用与间接调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2575299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com