当你在c中声明一个静态变量时

Pet*_*ung -4 c malloc pointers

当你在C中声明静态变量时,

说你写了这样一个程序:

int *c;
void foo(){
    c = (int *) malloc (10*sizeof(int));
    c = &c[3];
    *c = *&c[3];
}
Run Code Online (Sandbox Code Playgroud)

有什么意义*c?我的意思是我理解这*意味着它指的是什么,但*c做了什么?

而且,为什么需要转换(int *)返回值malloc()

Sou*_*osh 5

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

与此问题无关,或至少与您显示的代码无关.

但是*c做了什么?

假设您的问题与语句有关*c = *&c[3];,它指的是地址所持有的对象c.

为什么你必须在malloc前面转换(int*)?

你不应该.请不要转换malloc() [和家庭] 的返回值.

注意:您的代码片段非常差且做法不好,最有可能无效.c = &c[3];明显的内存泄漏.