2010-03-29 29 views
5

tôi nhận được lỗi "intitializer fails to determine size of 'K'" tại dònglỗi: initializer thất bại trong việc xác định kích thước của ‘K’

int K[]= new int[Vertices->total]; 

Làm thế nào để giải quyết nó?

+3

Bạn cần phải quyết định xem bạn đang lập trình trong 'C++' hoặc ' C', và, nếu nó là thứ hai, cho dù bạn đang sử dụng 'C99' hay không. –

+1

Thông báo lỗi tệ hại. Bạn đang sử dụng trình biên dịch nào? –

+1

@nobugz Thực ra, tôi nghĩ đó là một thông báo lỗi hợp lý. –

Trả lời

18

Thay đổi

int K[]= new int[Vertices->total]; 

để

int *K = new int[Vertices->total]; 

Một 1st là cách Java của việc tạo ra một mảng, nơi bạn K là một tham chiếu đến một mảng số nguyên. Nhưng trong C++, chúng ta cần phải đặt K con trỏ thành loại số nguyên.

+0

Thankx làm việc của nó, Nhưng tôi có thể sử dụng cùng một K để lưu trữ mảng – smile

+1

@shiva Hầu như. Mảng trong c thực sự chỉ là con trỏ tới các khối bộ nhớ. vì vậy, nếu bạn muốn sử dụng K để thao tác một mảng của mảng số nguyên, khai báo sẽ là 'int K ** = new int * [ ´ – sum1stolemyname

3

new int[Vertices->total] trả về một con trỏ và do đó, int *K = new int[Vertices->total]; sẽ hoạt động tốt.

Nếu bạn biết kích thước của Vertices->total tại thời gian biên dịch (tức là không đổi) thì bạn có thể đã sử dụng int K[Vertices->total]; // Cấp phát bộ nhớ trên stack

Các vấn đề liên quan