超凡天赐 发表于 2017-2-24 19:19:50

关于指针的理解

本帖最后由 超凡天赐 于 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 @康小泡

人造人 发表于 2017-2-24 19:50:20

你的编译器没有做检查
我的就不行了

zealstar 发表于 2017-2-24 19:55:08

我的编译成功,运行不了啊!
二级指针,和指针数组应该没有直接关系吧!{:10_266:}

超凡天赐 发表于 2017-2-24 21:23:53

人造人 发表于 2017-2-24 19:50
你的编译器没有做检查
我的就不行了

你用的是什么VS的哪一版

超凡天赐 发表于 2017-2-24 21:26:41

zealstar 发表于 2017-2-24 19:55
我的编译成功,运行不了啊!
二级指针,和指针数组应该没有直接关系吧!

确实没有关系,只不过是相似

人造人 发表于 2017-2-24 22:38:59

超凡天赐 发表于 2017-2-24 21:23
你用的是什么VS的哪一版

vs2015

四十二 发表于 2017-2-25 17:48:00

别纠结这些东西吧,等你用到数据结构的时候再系统的理解内存分配这些东西。

wangwenjing 发表于 2017-5-26 17:53:27

{:10_249:}
页: [1]
查看完整版本: 关于指针的理解