指针与变量,Objective-C

sal*_*ons 5 c objective-c

抓住一些概念我有些困难.感谢帮助.

假设您有以下代码:

int *intPtr;   // creates a pointer
int count = 10; // initiates an intiger variable
intptr = &count; // ??
Run Code Online (Sandbox Code Playgroud)

&经营者给的地址给一个变量,在这种情况下,整数count.然后将地址分配给intptr.我的问题是:为什么intptr = count;还不够.我知道这count是一个变量并且intptr是一个指针,但是它也不仅仅是指内存中的某个位置吗?

汉斯

wad*_*rld 8

count是指变量的VALUE.您不希望将count的值赋给intptr,您想要分配count的地址.因此使用&运算符.

如果你执行intptr = count,那么在这种情况下,你将指向内存地址10,这肯定是在系统内存中,而不是你的应用程序内存,你就会崩溃.

另外,请注意,这不是一个Objective-C问题.这是一个C问题.


Flo*_*rin 5

重要的是要理解指针实际上有不同的数据类型.

一个int变量将举行整数值.

一个pointer变量将举行的内存地址.

所以将int变量赋给指针变量是不对的(如你所建议的那样intptr = count;)

我相信使用a typedef可以帮助你更好地理解差异.

这是一个小例子:

#include <stdio.h>

typedef int* int_pointer;

int main() {

    int n; // integer
    int_pointer p; // pointer

    n = 5;

    p = &n; // p's value is now n's address

    *p = *p + 1; // add 1 to the value stored at the location that p points to
                 // and put that value back in the same location

    printf("n = %d\n", n);
    printf("*p = %d\n", *p);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序将打印

n = 6
*p = 6
Run Code Online (Sandbox Code Playgroud)