gpt4 book ai didi

objective-c - 你能帮我理解指针吗?

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

我知道之前有人问过这个问题,但是这些其他问题没有涉及的一件事是为什么

请允许我解释一下。我刚刚浏览了一个输出整数和指针的教程,以向您展示如何执行此操作。

int anInteger = 50;
int *anIntPointer = &anInteger;

因此,为了设置一个指针,我像往常一样分配一个变量值,然后将该变量分配给一个指针。我明白这一点,但正如我已经说过的,这是如何而不是为什么

如果我想返回值 50 我可以只返回 NSLog anInteger 所以为什么我需要一个指针。为什么我需要 NSLog *anIn​​tPointer 如果我可以 NSLog anInteger 做完全相同的事情?

好吧,我知道这是非常微不足道的,并且可能存在使用指针的完美环境,但到目前为止,我阅读或观看的任何教程都不会给我一个完美的环境。它们都处理如何

请帮我找出原因

最佳答案

指针有很多用途。一个明显的原因是您想调用一个函数并让它修改您的一个变量:

void f(int *i) { *i = 42; }
int g() { int i; f(&i); return i; }

另一种是无需大量复制就返回一个大型结构:

struct big_struct *f() {
big_struct *bs = malloc(sizeof(big_struct));
// Populate the big_struct;
return bs;
}

还有一个是管理你在编译时不知道大小的数组:

struct item *fetch_items(int n) {
item *i = malloc(n*sizeof(item));
load_items(i, n);
return i;
}

还有一种是递归数据类型,比如链表:

struct node {
int value;
struct node *next;
};

这只是一个示例。指针就像木匠的钉子。它们是解决几乎所有重要编程问题的关键工具。

关于objective-c - 你能帮我理解指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5337848/

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