当您在 C 中声明静态变量时



当你在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 取消引用。

相关内容

  • 没有找到相关文章

最新更新