[问题] C 语言阵列用指标写

楼主: chinagogoya (下棋逍遙遊)   2015-04-14 16:00:57
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
C
问题(Question):
int main(void)
{
int a[5]={0,1,2,3,4};
int i = 0;
while( (a+i) != NULL )
{
printf("%d ",*(a + i));
i++;
if(i == 100) break; //假如跑无穷循环,就跳出。
}
printf("\n");
system("PAUSE");
return 0;
}
我的问题是我想要任意阵列去写,想试试看将阵列改为指标,
可是我为什么会跑无穷循环?
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-14 16:16:00
因为 a+i 永远也不会 == NULL
楼主: chinagogoya (下棋逍遙遊)   2015-04-14 16:18:00
所以要想想看怎么写?
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-14 16:20:00
施主,这个问题应该要问你自己
作者: Jockey66666 (往事已成追忆)   2015-04-14 16:34:00
不要去想内存要怎么表现, 你只需要知道array长度施主,这个问题应该要问你自己
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-14 18:16:00
你一直无限循环不就是[表现没配置到的内存空间]吗
作者: jaid (jaid)   2015-04-14 22:29:00
sizeof()
作者: kwpn (ITSST)   2015-04-15 18:15:00
你明明知道a[5]是5个, 怎会想不出怎跳出loop
作者: LPH66 (-6.2598534e+18f)   2015-04-16 00:34:00
你可以思考为什么 C 字串需要一个 '\0' 结尾这个 '\0' 就是在不知道长度的状况下的变通法
作者: TobyH4cker (Toby (我要当好人))   2015-04-16 01:42:00
前提是字符阵列才有效
作者: LPH66 (-6.2598534e+18f)   2015-04-16 03:15:00
观念不限在字符阵列, 只是 '\0' 这玩意就要换成适当的东西
作者: kwpn (ITSST)   2015-04-16 13:18:00
请问哪来的未知长度阵列? 宣告一个静态阵列, 你跟编译器都知道(呼叫sizeof()取的到长度,就是因为编译器知道),宣告动态阵列,也要执行期指定阵列的长度,这时把长度用另外的变量记下来不就好了?(就像std::vector在做的事)假设不是结尾有特定的定义(如字串的'\0'),又假设你不知道长度,那你只好自己定义条件。
作者: play714 (play)   2015-04-19 00:51:00
如果阵列都是存正整数,可以写成while(*(a+i) >=0)
作者: hakman (^____^)   2015-04-20 06:23:00
使用 没配置到的内存空间 是不被允许的 通常OS会去档掉建议是暂时不要往这方面想 要想任意矩阵都可使用,有其它的方法可以实现

Links booklink

Contact Us: admin [ a t ] ucptt.com