求助,代码如下,为什么a[0]
c4droid吧
全部回复
仅看楼主
level 6
求助,代码如下,为什么a[0]到9后,会回到1呢,还有我*p等于1和9是输出咋是9个0呢,新手,求大神解释
#include<stdio.h>
int main()
{
int a[10]={1,4,6,8,10,13,15,18,19,0};
int b[3][3]={0,0,0,0,0,0,0,0,0};
int c;
int *p;p=a;
for(int i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
l:*p+=1;
for(int i=0;i<3;i++)
for(int t=0;t<3;t++)
b[i][t]=0;
b[0][*p]=1;
for(int i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
for(int i=0;i<3;i++)
{ for(int t=0;t<3;t++)
printf("%d ",b[i][t]);
printf("\n");
}
usleep(1000000);
goto l;
}
2017年09月24日 06点09分 1
level 5
[滑稽]
2017年09月24日 06点09分 2
level 14
//不知道你的意图,改成这样
#include <stdio.h>
#include <conio.h>
int main() {
int a[10] = {1, 4, 6, 8, 10, 13, 15, 18, 19, 0};
int b[3][3] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int c = 0;
int *p;
p = a;
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
l:
if (*p == 0)
return 0;
for (int i = 0; i < 3; i++)
for (int t = 0; t < 3; t++)
b[i][t] = 0;
b[0][c] = *p;
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
for (int i = 0; i < 3; i++) {
for (int t = 0; t < 3; t++)
printf("%d ", b[i][t]);
printf("\n");
}
usleep(1000000);
++p;
++c;
goto l;
}
2017年09月24日 10点09分 4
你运行下就知道了,我让a[0]一直加1,它咋还会返回成1呢
2017年09月24日 14点09分
@怀念其实淡忘 因为*p==10时b[0][*p]越界意外改写了a[0]的值,也等于改写了*p,所以又从头开始
2017年09月24日 14点09分
哦,谢谢了[呵呵]
2017年09月24日 15点09分
是不是我们要声明调用那片内存,才可以使用呢?如 int a[9]={1,2,3,4,5,6,7,8,9,0} 可以正常输出0吗
2017年09月24日 15点09分
1