当你在C中声明静态变量时,
假设你写了一个这样的程序:
int *c;
void foo(){
c = (int *) malloc (10*sizeof(int));
c = &c[3];
*c = *&c[3];
}
拥有*c
意味着什么?我的意思是我明白*
意味着它指向某事,但*c
做什么?
还有,为什么需要强制(int *)
malloc()
的返回值?
在 C 中声明静态变量时
与此问题无关,或者至少与您显示的代码无关。
但是*C有什么作用呢?
假设你的问题与语句*c = *&c[3];
有关,它指的是c
持有的地址处的对象。
为什么你必须在马洛克面前投掷(int *)?
你不应该。请不要强制转换malloc()
[和家人] 的返回值。
注意:您的代码片段非常糟糕和不良的做法,很可能是无效的。 c = &c[3];
明显的内存泄漏。
我的意思是我明白 * 意味着它指向某事,但 *c 有什么作用?
* 并不总是意味着它指向某事。例:如果你写这个:
int* c;
这意味着 c 是指向 int 变量的指针。
当你这样做时:
int* c = &x;
*c = 5;
第二个 * 是指针 c 取消引用。