我就是想不通 所以我来了;
这行代码中用指针输出的要么是30要么是乱码。。求大神给我点提示。。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a, *p,i;
p=(int *)malloc(10);
for ( i = 0; i < 10; i++)
{
a = i;
}
p=a;
for (i = 0; i < 10; i++)
{
printf("%d\n", a);
}
for (int i = 0; i<10; i++);
{
printf("这个数组里面的数据是:%d\n", *(p+i));
}
free(p);
system("pause");
return 0;
}
额。。。。。和动态分配地址好像没有关系。。。。
#include<stdio.h>
int main()
{
int a;
int *p,i;
printf("请输入一组整数数据:");
for(i=0;i<3;i++)
{
scanf("%d",&a);
}
for (i=0; i<3; i++)
{
printf("%d\n", a);
}
for (p=a;p<(a+3);p++);
{
printf("这个数组里面的数据是:%d\n", *p);
}
return 0;
}
这样输出的也是乱码。。。我就不懂了; #include<stdio.h>
#include<stdlib.h>
int main()
{
int a, *p,i;
p=(int *)malloc(10);
for ( i = 0; i < 10; i++)
{
a = i;
}
p=a;
for (i = 0; i < 10; i++)
{
printf("%d\n", a);
}
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, *p,i;
p=(int *)malloc(10);
for ( i = 0; i < 10; i++)
{
a = i;
}
p=a;
for (i = 0; i < 10; i++)
{
printf("%d\n", a);
}
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循环后面带分号意味着这是个空循环, stromman 发表于 2015-3-29 12:15
#include
#include
int main()
十分感谢。。。谢谢我懂了。
页:
[1]