Khai báo biến động trên cùng 1 dòng

Mình muốn khai báo tất cả biến động trên cùng 1 dòng nhưng không biết làm thế nào?

VD: thay vì

int *a = new int;
int *b = new int;
int *c = new int;

có cách nào không ạ?

Mình thử

int *a,*b,*c=new int; 

nhưng không được.

Thử thế này xem có được không :

int* a= new int, b= new int, c=new int;
1 Like

Hi Tran Nhu Thanh
Nhưng để làm gì ?

Nếu là

int* a= new int, *b= new int, *c=new int;

vậy thì được bạn, nhưng mình thấy vẫn còn dài.

Để gõ cho ngắn hơn thôi hì hì

Thiếu * ở trước b, c rồi.

Hi Tran Nhu Thanh.
Theo mình thì việc đó chẳng có ý nghĩa gì cả trong lập trình có quy tắc đặt tên biến tên hàm và comment code bạn nên tìm hiểu qua nếu có ý định lập trình một cách nghiêm túc.

2 Likes
#define nay_thi_khai_bao(x) int *x = new int;
...
nay_thi_khai_bao(a);
nay_thi_khai_bao(b);
nay_thi_khai_bao(c);
...
#undef nay_thi_khai_bao
...

*a = 1; *b = 2; *c = 3;
...

Cách này không được khuyến khích, viết mấy chương trình nhỏ nhỏ cho vui thì được.

3 Likes

Nếu bạn muốn vậy thật (viết ngắn như ví dụ của bạn) thì đây có thế gọi là nhược điểm của C++ (và hầu hết các ngôn ngữ lập trình bây giờ) rồi, đơn giản là “ngữ pháp” này không thuộc chuẩn C++, và tương lai có vẻ sẽ không có “ngữ pháp” này cho bạn dùng, vì nó đặc biệt quá, dễ gây hiểu lầm khi đọc code.
Thay vào đó bạn có thể viết 1 function nào đó rồi truyền cả 3 con trỏ đó vào, code đâu đó thì dài nhưng chỗ định nghĩa con trỏ sẽ gọn:

function alloc(int**a, int**b, int**c)
{
   *a = new int; *b = new int; *c = new int;
} // ở đây thì dài
int main()
{
   int *a, *b, *c;
   alloc(&a, &b, &c); // nhưng ở đây thì ngắn
}

Nếu bạn muốn truyền bất kì số hạng thì bạn đọc thêm Variadic arguments.

1 Like

Dùng mảng nhé. Ngắn gọn, đỡ phải nghĩ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?