这样是不是达到无限定义的目的了呢?
#include<stdio.h>main()
{
int *p;
int aa[] = {0};
p = &aa;
*(p+1) = 5;
}
这样是不是就是不限定数组的大小了呢?
严格说并没有实现不定长数组。。。#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;
}
指針的作用在於數據的操作傳遞, 這裡定義的指針p是多餘的
也可以直接使用 *(aa+1) = 5 何必又請 p 來淌這趟渾水
給你一個觀念, 指針是拿來做數據操作用的, 不是拿來為了指針而指針的
!!!!!!!!!!!!!!!!!!! elvo 发表于 2014-5-26 21:19 static/image/common/back.gif
严格说并没有实现不定长数组。。。
是不是还要向系统申请一段内存之后才能有作用呢? 815116820 发表于 2014-5-28 12:49 static/image/common/back.gif
是不是还要向系统申请一段内存之后才能有作用呢?
申请内存,要申请多大的内存,这个大小得先知道,所以也不能实现不定长,,,如果使用链表动态申请空间,实现不定长,但也就就不是数组了。。。创建不定长的数值应该是无法实现的,数值在内存中连续,因为不知道具体需要长的数组,则申请的数组得是一个无限长的,这个显然实现不了。。。如果你想使用不定长的数据结构,可以使用链表,C++里还有vector
页:
[1]