关于指针的理解
本帖最后由 超凡天赐 于 2017-2-25 00:17 编辑#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
int i,j;
for(i=0;i<10;i++)
p=malloc((i+1)*sizeof(int));
for(i=0;i<10;i++)
{
p=1;
p=1;
}
for(i=1;i<9;i++)
for(j=0;j<i;j++)
{
p=p+p;
}
for(i=0;i<10;i++)
{
for(j=0;j<18-i*2;j++)
printf(" ");
for(j=0;j<i+1;j++)
printf("%4d",p);
putchar('\n');
}
for(i=0;i<10;i++)
free(p);
return 0;
}
一个简单求杨辉三角前十行的程序,但是我发现将*p改为**p也行,我的编译器同样能通过。假如我使用的是二级指针如下
int **p;
int i,j;
for(i=0;i<10;i++)
p=malloc((i+1)*sizeof(int));
我并未给p以下的p,p,p申请内存空间,但这样做我的编译器却可以,这是为什么?@人造人 @四十二 @zealstar @康小泡 你的编译器没有做检查
我的就不行了
我的编译成功,运行不了啊!
二级指针,和指针数组应该没有直接关系吧!{:10_266:} 人造人 发表于 2017-2-24 19:50
你的编译器没有做检查
我的就不行了
你用的是什么VS的哪一版 zealstar 发表于 2017-2-24 19:55
我的编译成功,运行不了啊!
二级指针,和指针数组应该没有直接关系吧!
确实没有关系,只不过是相似 超凡天赐 发表于 2017-2-24 21:23
你用的是什么VS的哪一版
vs2015 别纠结这些东西吧,等你用到数据结构的时候再系统的理解内存分配这些东西。 {:10_249:}
页:
[1]