为什么不加个static
时间: 2023-11-08 16:04:12 浏览: 26
即使在GetMemory()函数中加上了static关键字,也不能解决问题。因为static关键字只会改变变量的存储位置,但是并不会改变变量的生命周期。在GetMemory()函数中,加上static关键字,会使得变量p的存储位置从栈空间转移到静态存储区,但是p仍然是一个局部变量,函数返回时会被自动销毁,p所指向的存储区也会被释放。因此,将p的地址返回给调用者是非法的,通过该地址访问的内容是不确定的,程序的行为是未定义的。在这种情况下,使用动态内存分配函数(如malloc、new等)分配内存,才是正确的做法。
相关问题
java类中方法为什么不加static
Java类中的方法可以选择是否加上static关键字,这取决于方法的特定用途和设计需求。当一个方法没有被声明为static时,它被称为实例方法。
实例方法是与类的实例对象相关联的方法,只能通过类的实例对象调用。这意味着每次创建一个新的类实例时,都会在内存中分配一块新的内存空间来保存实例方法。实例方法可以访问和操作实例变量,因为它们是与实例对象相关联的。
相比之下,使用static关键字声明的方法称为静态方法。静态方法与类本身相关联,而不是与类的实例对象相关联。它们在内存中只有一份拷贝,并且可以通过类名直接调用,而不需要创建类的实例对象。静态方法无法访问实例变量,因为它们没有与之相关联的实例对象。
使用实例方法还是静态方法取决于你的需求。如果你需要访问和操作实例变量,或者需要依赖于特定的实例状态,那么使用实例方法更合适。如果你不依赖于实例状态,并且只需要执行一些通用操作,那么使用静态方法可能更合适。
static为什么还要加const
"static"关键字用于声明静态变量或函数,它的作用是限制变量或函数的作用域,使其只能在声明它的文件中访问,而不能被其他文件所访问。
"const"关键字用于声明常量,它的作用是告诉编译器这个变量是不可修改的,如果程序试图去修改它,编译器会报错。
在某些情况下,我们需要同时使用这两个关键字。例如,当我们需要在一个函数中定义一个静态常量时,就需要使用"static const"关键字来声明。这样做可以确保该常量只能在该函数中使用,而且不能被修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)