2012-06-20 32 views

Trả lời

12

Không có gì, [] chỉ là đường cú pháp cho con trỏ.

Dưới đây là một trường hợp thử nghiệm đơn giản để chứng minh rằng thậm chí không có một sự khác biệt trong lập chỉ mục:

#include <stdio.h> 

void fun1(int a[][3]) { printf("%d\n", a[2][2]); } 
void fun2(int (*a)[3]){ printf("%d\n", a[2][2]); } 

void main() { 
    int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 
    fun1(a); // prints 9 
    fun2(a); // prints 9 
} 
3

Không có gì, Cả hai đều giống nhau. Chỉ vì mục đích thuyết phục của chúng tôi.

2

Không có sự khác biệt giữa hai trường hợp trên. Trong C, khi ký hiệu mảng được sử dụng cho tham số hàm, nó được tự động chuyển thành khai báo con trỏ.

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