30/09/2018, 19:28

Lỗi "expected )" trong C

chào anh chị em diễn đàn, em có làm một bài toán là nhập vào mảng động và in nó ra.
Nhưng ở câu lệnh cấp phát bộ nhớ cho con trỏ a thì bị lỗi thiếu dấu )
em đã xem rất kỹ là không hề thiếu @@ . Các anh sửa giúp em với ạ

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int *nhap(int *n)
{
    int *a;
    printf("
 Nhap so phan tu cua mang : ");
    scanf("%d",n);
    a= (int *) malloc ((*n)sizeof(int)) ;
    printf("
 Nhap mang a : ");
    for(int i=0;i<*n;i++){
        scanf("%d",&a[i]);
    }
    
    return a;
}

int main(){
    int *a,n;
    a=nhap(&n);
    printf("
 Mang vua nhap la : ");
    for(int i=0;i<n;i++){
        printf("
 %d",a[i]);
        
    }
}
Khôi Trần viết 21:37 ngày 30/09/2018

tại em chưa hiểu bản chất của cấp phát động thôi, (*n)sizeof(int) mục đích để làm gì ? trả lời được là xong.

Việt Dũng Lê viết 21:40 ngày 30/09/2018

da, theo như em hiểu đó là em cấp phát n ô nhớ cho con trỏ a
(n phần tử cho mảng a )
nếu em hiểu sai mong anh chỉ lại giúp em ạ

Lập Trình Sư viết 21:40 ngày 30/09/2018

a= (int *) malloc ((*n)sizeof(int)) ;

cú pháp gì lạ vậy @@

a= (int *) malloc (n * sizeof(int)) ;
Việt Dũng Lê viết 21:34 ngày 30/09/2018
a= (int *) malloc (n * sizeof(int)) ;

cũng không được anh ạ

Việt Dũng Lê viết 21:31 ngày 30/09/2018

em đã fix được lỗi ,cám ơn các anh ạ

Khôi Trần viết 21:42 ngày 30/09/2018

em hiểu đúng rồi đấy (*n) là số ô nhớ sizeof(int) là kích thước vùng nhớ nên ta phai viết (*n)*sizeof(int) nhá

Bài liên quan
0