#include <stdio.h>
#define D 3
#define C 4
int main()
{
int a[D][C]; //câu lệnh 1
int i;
int *p = (int *)a; //câu lệnh 2
//printf("%p", &a[0]);
for (i = 0; i < D*C; i++)
{
printf("Nhap phan tu thu %d: ", i);
scanf("%d", p + i);
}
for (i = 0; i < D*C; i++)
printf("%d ", *(p + i));
}
Em hiểu như thế này
- câu lệnh 1:
a là con trỏ cấp 2 trỏ đến a[0], a[0] là con trỏ đến a[0][0] - câu lệnh 2:
em nghĩ là ép kiểu a về kiểu con trỏ int, không hiểu chổ này vì lúc này a được hiểu là con trỏ cấp 2, ép về con trỏ cấp 1 liệu ổn không, và có mục đích gì, gán thẳngint *p = &a[0][0];luôn khoẻ hơn không vìint *p = (int *)a; <=>int *p = *a ;mà *a trỏ về phần tử a[0][0] nênp = &a[0][0];
Mọi người xem giúp em nói có đúng không 

gán thẳng luôn có khoẻ hơn không
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?