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\n",(p[i]));
    system("pause");
    return 0;
}

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

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

nhưng sao khi em dùng

printf("%s\n",*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.

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.
2 Likes

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

1 Like

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

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