815116820 发表于 2014-5-26 21:19:41

这样是不是达到无限定义的目的了呢?

#include<stdio.h>
main()
{
      int *p;
      int aa[] = {0};
      p = &aa;
      *(p+1) = 5;

}
这样是不是就是不限定数组的大小了呢?

elvo 发表于 2014-5-26 21:19:42

严格说并没有实现不定长数组。。。#include<stdio.h>
int main()
{
        int *p;
        int aa[] = {0}; //这样写只能说是建立了一个aa,并初始化为0
        //p = &aa;    //p是一个指针,aa以及是一个数组地址了。。。
                                //p=&aa是不相等的。。。会报一个不能转换的error
        p=aa;
        *(p+1)=5;//你可以多试几个,便会发现段错误
        //*(p+2)=6; //所以并没有实现不定长的数组。。。。
        //*(p+3)=7;

        return 0;
}

kikiatw 发表于 2014-5-26 21:25:54

指針的作用在於數據的操作傳遞, 這裡定義的指針p是多餘的
也可以直接使用 *(aa+1) = 5 何必又請 p 來淌這趟渾水

給你一個觀念, 指針是拿來做數據操作用的, 不是拿來為了指針而指針的

勿语静候 发表于 2014-5-26 23:52:51

!!!!!!!!!!!!!!!!!!!

815116820 发表于 2014-5-28 12:49:15

elvo 发表于 2014-5-26 21:19 static/image/common/back.gif
严格说并没有实现不定长数组。。。

是不是还要向系统申请一段内存之后才能有作用呢?

elvo 发表于 2014-5-28 15:19:54

815116820 发表于 2014-5-28 12:49 static/image/common/back.gif
是不是还要向系统申请一段内存之后才能有作用呢?

申请内存,要申请多大的内存,这个大小得先知道,所以也不能实现不定长,,,如果使用链表动态申请空间,实现不定长,但也就就不是数组了。。。创建不定长的数值应该是无法实现的,数值在内存中连续,因为不知道具体需要长的数组,则申请的数组得是一个无限长的,这个显然实现不了。。。如果你想使用不定长的数据结构,可以使用链表,C++里还有vector
页: [1]
查看完整版本: 这样是不是达到无限定义的目的了呢?