30/09/2018, 22:05

Thắc mắc về cấp phát mảng con trỏ trong C

Em có 1 đoạn code ntn:

int main()
{
    //shell_loop();
    char **p=malloc(sizeof(char *)*3);
    int i;
    p[0]="abc";
    p[1]="xyz";
    p[2]="def";
    for(i=0;i<3;i++)
        printf("%s
",(p[i]));
    system("pause");
    return 0;
}

Để xuất ra 1 phần tủ bất kì thì dùng

printf("%s
",p[0]);

nhưng sao khi em dùng

printf("%s
",*p[0]);

Thì chương trình bị crash. Mọi người giải thích giúp em được không? Em cảm ơn.

Pham Van Hai viết 00:09 ngày 01/10/2018

Là do bạn không hiểu rõ cách dùng hàm printfformat specifiers của nó, bạn lên mạng đọc lại:

  • %s yêu cầu biến truyền vào hàm là một con trỏ trỏ tới vùng nhớ có chuỗi.
  • p[0] là con trỏ rồi, *p[0] thì không --> crash.
Tao Không Ngu. viết 00:11 ngày 01/10/2018

This post was flagged by the community and is temporarily hidden.

Sơn viết 00:16 ngày 01/10/2018

Cảm ơn 2 bạn, mình hiểu rồi

Bài liên quan
0