鱼C论坛

 找回密码
 立即注册
查看: 2439|回复: 5

[技术交流] 这样是不是达到无限定义的目的了呢?

[复制链接]
发表于 2014-5-26 21:19:41 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
main()
{
      int *p;
      int aa[] = {0};
      p = &aa;
      *(p+1) = 5;

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

最佳答案

查看完整内容

严格说并没有实现不定长数组。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-26 21:25:54 | 显示全部楼层
指針的作用在於數據的操作傳遞, 這裡定義的指針p是多餘的
也可以直接使用 *(aa+1) = 5 何必又請 p 來淌這趟渾水

給你一個觀念, 指針是拿來做數據操作用的, 不是拿來為了指針而指針的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-26 23:52:51 | 显示全部楼层
!!!!!!!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-28 12:49:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-28 15:19:54 | 显示全部楼层
815116820 发表于 2014-5-28 12:49
是不是还要向系统申请一段内存之后才能有作用呢?

申请内存,要申请多大的内存,这个大小得先知道,所以也不能实现不定长,,,如果使用链表动态申请空间,实现不定长,但也就就不是数组了。。。创建不定长的数值应该是无法实现的,数值在内存中连续,因为不知道具体需要长的数组,则申请的数组得是一个无限长的,这个显然实现不了。。。如果你想使用不定长的数据结构,可以使用链表,C++里还有vector
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 12:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表