30/09/2018, 16:37
[Cấp phát động ] Sự khác nhau giữa 2 hàm?
#include <stdio.h>
#include <stdlib.h>
int main(){
int x = 9, iArr[10], y = 10, *iP;
iP = iArr; // tương đương iP trỏ về iArr[0]
*(iP + 10) = 5; // tương đương iArr[10] -> lỗi;
*(iP - 1) = 0; // tương đương iArr[-1] -> lỗi;
printf("%d %d
", x, y);
return 0;
}
int main1(){
int x = 9, *iArr, y = 10, *iP;
iArr = (int*)malloc(10 * sizeof(int));
iP = iArr;
*(iP + 10) = 5;
*(iP - 1) = 0;
printf("%d %d
", x, y);
return 0;
}
Hàm thứ nhất sẽ bị lỗi sau khi kết thúc hàm còn hàm 2 thì không.
Mảng tĩnh và mảng động khác nhau như thế nào ở trường hợp này ?
Bài liên quan
chả có gì khác :c
hàm 1 vẫn in ra đúng giá trị
chỉ khác ở chỗ là cái mảng ở hàm main ko thể tùy chỉnh kích thước mảng
còn ở hàm main1 thì thích thì tăng thêm. Còn ko thì th ‘3’
http://ideone.com/UJNt9M