开发平台(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;
}
我的问题是我想要任意阵列去写,想试试看将阵列改为指标,
可是我为什么会跑无穷循环?
不要去想内存要怎么表现, 你只需要知道array长度施主,这个问题应该要问你自己
作者: 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' 就是在不知道长度的状况下的变通法
作者:
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会去档掉建议是暂时不要往这方面想 要想任意矩阵都可使用,有其它的方法可以实现