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

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

Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        4年前关闭。
                                                                                            
                
        
当您在C中声明静态变量时,

说您编写了这样的程序:

int *c;
void foo(){
    c = (int *) malloc (10*sizeof(int));
    c = &c[3];
    *c = *&c[3];
}


*c是什么意思?我的意思是我理解*表示它指向某物,但是*c会做什么?

还有,为什么需要强制转换(int *)的返回值?

最佳答案

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


与此问题无关,或与您显示的代码无关。


  但是* c做什么?


假设您的问题与语句*c = *&c[3];有关,则它指向c持有的地址处的对象。


  为什么要在malloc前面强制转换(int *)?


你不应该。请do not cast malloc() [和家庭]的返回值。

注意:您的代码段非常差,并且是错误的做法,最有可能是无效的。 c = &c[3];明显的内存泄漏。

关于c - 当您在c中声明静态变量时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28293110/

10-09 02:14