30/09/2018, 16:03

Cùng đặt vấn đề nào (Bản số 6)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void func_a()
{
     static int i = 0;
     i++;
     printf("%d", i);
}

int main()
{
     for (int i = 0;i<10;i++)	func_a();
}

Đố các bạn biết đoạn chương trình trên in ra cái gì và tại sao?

Nguyễn Minh Dũng viết 18:10 ngày 30/09/2018

Nó in ra 12345678910 vì biến i là biến static. Biến static sẽ được khởi tạo một lần duy nhất, các lần khởi tạo sau sẽ bị bỏ qua. Dẫn đến biến i trong hàm func_a chỉ được khởi tạo 1 lần và khi tăng giá trị của i lên thì giá trị đó vẫn còn được giữ lại cho lần gọi hàm sau.

Bài liên quan
0