抓住一些概念我有些困难.感谢帮助.
假设您有以下代码:
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
是一个指针,但是它也不仅仅是指内存中的某个位置吗?
汉斯
count是指变量的VALUE.您不希望将count的值赋给intptr,您想要分配count的地址.因此使用&运算符.
如果你执行intptr = count,那么在这种情况下,你将指向内存地址10,这肯定是在系统内存中,而不是你的应用程序内存,你就会崩溃.
另外,请注意,这不是一个Objective-C问题.这是一个C问题.
重要的是要理解指针实际上有不同的数据类型.
一个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)
归档时间: |
|
查看次数: |
5786 次 |
最近记录: |