为什么以及何时应该使用一种方法?我想了解有关指针的更多信息,但我无法理解这种使用场景。
int i = 12;
i += 1; // 13
i = 55; // 55
int x = 6;
int * y = &x;
*y += 1; // 7
*y = 91; // 91
我已经研究过这个问题,但找不到答案,因此关于SO的帖子。我不是在问他们做什么,我理解他们对记忆的影响。我不明白应该在上面的场景风格中使用哪个。标题已更新,以反映这种误解。
答案 0 :(得分:0)
我知道我的回答会引起许多人的注意,但我可以将你在这里提出的问题联系起来,所以回复。
为了简化编程,您可以尽可能避免使用指针。您最初编写的大多数程序根本不需要指针。
但是,当您开始编写复杂的程序时,您还需要尽可能减少执行时间,您可能需要使用指针。
除了时间限制外,还有许多其他地方会使用指针,例如:当你想要传递/返回一个函数的结构时。因为传递/返回结构作为值会将负载放在堆栈上。
然而,指针很复杂,如果您的系统中没有任何内存/时间限制,您可能希望避免使用它们编写简单的程序。
无论如何,您可以谷歌(或阅读一些书籍)有关指针的更多信息。
答案 1 :(得分:0)
每当需要间接访问对象时,您都会使用指针,例如:
答案 2 :(得分:0)
int i = 12;
i += 1; // 13
i = 55; // 55
在您的示例中,您正在创建一个临时整数变量i并将值12存储在其中。然后,您将获取已经存储在i(12)中的值,并将其加1。 我+ = 1;与i = i + 1相同;在您的情况下,i = i + 1等于以下数学公式: 我= 12 +1 然后,您将丢弃刚刚存储在i中的值,并用55 替换。将已存储在临时变量i中的数据覆盖。
int x = 6;
int * y = &x;
*y += 1; // 7
*y = 91; // 91
现在,对于x和y,您x是一个临时整数变量,就像上面的i一样。
但是,通过说int * y = [something];
,您是在声明一个指向某个整数的存储位置的临时整数指针。通常,已经创建的某个变量的内存地址。将y设置为x的地址,则将指针指向x的内存中的位置。在这种设置下,对y(* y)取消引用将产生x的 value ,而不是x的地址。如果打印出y,则将打印x的地址。如果打印出* y,则将打印出x的值。 * y + = 1产生x + 1的值。将* y设置为91会重置x的值,就像上面对i和55所做的相同。
允许我通过示例演示该指针的有用性。
让我们说您有4个整数指针都被设置为指向x(&x)的地址。在取消对这些指针中的任何一个指针(* ptr)的更改之后,其值将更改存储在x中的值,从而更改您初始化的其他3个指针的 each 所指向的值X。
通过对比,可以说您有4个变量(int m,int n,int j,int k)都设置为等于4。将k加1时,它不会更改存储在m,n或j。只会改变k。
答案 3 :(得分:-2)
*和&之间的基本区别如下: * - 表示运算符的值 和 & -indicate operator
的地址