|
发表于 2015-3-29 12:15:51
|
显示全部楼层
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[10], *p,i;
p=(int *)malloc(10);
for ( i = 0; i < 10; i++)
{
a[i] = i;
}
p=a;
for (i = 0; i < 10; i++)
{
printf("%d\n", a[i]);
}
for (int i = 0; i<10; i++);
{
printf("这个数组里面的数据是:%d\n", *(p+i));
}
free(p);
system("pause");
return 0;
}
首先, p=(int *)malloc(10); 你分配10个单位的int的空间,然后用指针p指向这块内存
但是后面的 p=a; 你让原本指向那块内存的指针p又指向数组a,这样做,你之前的malloc就白写了,因为你已经丢失这块动态内存的地址了.
然后再看这堆代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[10], *p,i;
p=(int *)malloc(10);
for ( i = 0; i < 10; i++)
{
a[i] = i;
}
p=a;
for (i = 0; i < 10; i++)
{
printf("%d\n", a[i]);
}
for (int i = 0; i<10; i++);
{
printf("这个数组里面的数据是:%d\n", *(p+i));
}
free(p);
system("pause");
return 0;
}
看看这个for循环语句:
for (int i = 0; i<10; i++);
{
printf("这个数组里面的数据是:%d\n", *(p+i));
}
这个for循环语句有一点和其他的for循环语句不同,不同之处就是for语句后面多了个;
for循环后面带分号意味着这是个空循环, |
|