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 ?

*grab popcorn* viết 18:40 ngày 30/09/2018

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

Bài liên quan
0