关于malloc和realloc的疑惑
假如定义静态数组:int arr[3]={1,2,3};因为是以整形数组形式定义,所以当打印*(a+0)...等值时,系统知道每次要一定移动sizeof(int)个字节数,切每个值的地址是相邻的。
但是如果这样定义:
int *a=(int *a)malloc(sizeof(int));
*a=1;
a=(int *)realloc(a,2*sizeof(int));
*(a+1)=2;
a=(int *)realloc(a,3*sizeof(int));
*(a+2)=3;
之后如果想要打印*a,*(a+1),*(a+2)也可以打印出来。
但是,又malloc类函数分配的内存不是不一定连续么?
为什么还可以用数组的形式去取之中的值呢?就是*a,*(a+1),*(a+2),这样表示,不是说明这三值的地址是连续的么?
疑惑中