30/09/2018, 17:05

Khi nào nên dùng biến static, live time của nó?

Mình muốn được giải thích thêm về biến static. Khi nào nên dùng biến static, live time của nó… Cảm ơn

Mai Anh Dũng viết 19:14 ngày 30/09/2018

Đạt nghĩ nên di chuyển sang đây thì dễ trả lời hơn.


Biến static, trong C/C++, có được tạo ra khi load chương trình vào ram và chỉ hủy khi hủy chương trình. Thời gian sống bằng thời gian sống của chương trình chính.

Khi nào dùng static, tùy, khi nào có nhu cầu giữ gía trị của biến thì mình dùng static thôi.

Làm giàu, làm giàu, làm giàu..... viết 19:16 ngày 30/09/2018

trong c# nếu muốn dùng 1 biến từ 1 class nào khác thì phải thêm static cho biến đó. trước học oop có nói biến tĩnh là gì mà lâu rồi quên
// lủng kiến thức nặng quá rồi.

vũ xuân quân viết 19:11 ngày 30/09/2018

mình bổ sung thêm ý của bạn @ltd . Mình đã không còn dùng C/C++ lâu rồi nên chỉ đưa những ý dưới.
khi nào nên dùng static ?
theo mình nhớ thì khi biến đó được khai báo toàn cục, được sử dùng nhiều lần và giá trị biến có thể thay đổi nhiều lần thì nên dùng biến static.

Mai Anh Dũng viết 19:10 ngày 30/09/2018

theo mình nhớ thì khi biến đó được khai báo toàn cục

Đạt bổ sung cái này

Biến static có hai dạng: external linkage và internal linkage

  • external linkage: Khai báo ở ngoài mọi hàm
int handsome;
void chicken()
{
}
  • internal linkage: Khai báo trong hàm với từ khóa static
void chicken()
{
    static int num_egg = 3;
}
  • internal linkage: Khai báo ngoài hàm với từ khóa static
static int handsome; // chỉ được truy cập trong file hiện tại (hay compilation unit hiện tại)
void chicken()
{
}
Minh Hoàng viết 19:11 ngày 30/09/2018

2 cái internal linkage (khai báo trong và ngoài hàm với từ kháo static) giống nhau phải không anh? Nó có giống biến toàn cục không?

Mai Anh Dũng viết 19:06 ngày 30/09/2018

2 cái internal linkage (khai báo trong và ngoài hàm với từ kháo static) giống nhau phải không anh

Không em, cái trong hàm chỉ “nhìn thấy” trong hàm đó. Còn cái ngoài hàm thì có thể nhìn thấy ở bất cứ đâu trong file đó. Ngoài file không thấy được, bởi vì ta dùng từ khóa static

Demons Doan. viết 19:05 ngày 30/09/2018
#include<iostream>
using namespace std;

int kun(int p)
{
	static int x=15;
	x+=p;
	cout<<d<<endl;
	return d;
}
int main()
{
	int a=4;
	cout<<kun(a+kun(d));
	
}

anh đạt cho em hỏi biến static chỉ tạo 1 lần giá trị thôi hả anh (ý của em là sau lần gọi thứ 2 nó ko tạo lại x=15 nữa hả anh) em cảm ơn anh trước

Bài liên quan
0