user-0 提问: 循环体内数组定义问题

回复:
user: user-1
content: #include <stdio.h>  int main() {     int a = 3;     int i =0;     for(;i<=a;i++)         int b[5] ={2};     printf("%d\n",b);     return 0; } 编译不通过

user: user-2
content: 引用 5 楼 zhao4zhong1 的回复://编写程序输出下列图形： //00001 //00010 //00100 //01000 //10000 #include <stdio.h> int main() {     int i;      for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);     return 0; }  赞一个~~

user: user-0
content: 如果按照下面的程序运行就可以正常输出图形

user: user-3
content: 引用 11 楼 a515360208 的回复:[quote=引用 9 楼 u013955671 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] //编写程序输出下列图形： //00001 //00010 //00100 //01000 //10000 #include <stdio.h> int main() {     int i;      for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);     return 0; }  赞！！！！可是这是怎么实现的呀没看懂[/quote] "00001000"也有一个地址，%s都是从字符串指向的地址开始的，上面的程序等价于：  char *p = "000010000"; for (i=0;i<5;i++)     printf("%.5s\n", p + i);[/quote] 牛逼啊，我等还得加倍学习！

user: user-4
content: //编写程序输出下列图形： //00001 //00010 //00100 //01000 //10000 #include <stdio.h> int main() {     int i;      for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);     return 0; }

user: user-5
content: 同名变量的作用于问题。一般遵循最“近”原则，也就是大括号内定义的会覆盖大括号外定义的

user: user-6
content: 第二个能正确显示。 在花括号括起来的程序段内外有相同名字的变量时，程序段优先使用的是花括号内的变量，第一个程序中在定义括号内的a前用的是括号外的a，而定义括号内的a时使用的是另外的空间，并没有把括号外的a的值进行重置。  第二个虽然正确，但是括号外的a不起作用，最好删了。  强烈建议：在一个变量还在起作用的时候，不要定义同名的变量！

user: user-7
content: 数组只能在定义时整体赋值，其他任何时候都只能单独操作一个元素 理所当然的，一个数组不能定义两次，所以你自以为重设数组内容的那条语句实际上是定义了一个新的没用的数组

user: user-1
content: 引用 5 楼 zhao4zhong1 的回复://编写程序输出下列图形： //00001 //00010 //00100 //01000 //10000 #include <stdio.h> int main() {     int i;      for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);     return 0; } 给你点赞，

user: user-6
content: 引用 8 楼 u013955671 的回复:[quote=引用 3 楼 PDD123 的回复:] 第二个能正确显示。 在花括号括起来的程序段内外有相同名字的变量时，程序段优先使用的是花括号内的变量，第一个程序中在定义括号内的a前用的是括号外的a，而定义括号内的a时使用的是另外的空间，并没有把括号外的a的值进行重置。  第二个虽然正确，但是括号外的a不起作用，最好删了。  强烈建议：在一个变量还在起作用的时候，不要定义同名的变量！ 你好~程序优先选择花括号内的变量，第一个程序中在定义括号内的a前用的是括号外的a，而定义括号内的a时使用的是另外的空间，并没有把括号外的a的值进行重置。但是为何第二个将它的位置提前就可行，依然是将其放置在括号内部啊[/quote] 第一个程序，循环体在使用a的时候，括号内的a不是还没有定义么？没定义如何使用？

user: user-0
content: 引用 10 楼 starytx 的回复:[quote=引用 7 楼 u013955671 的回复:] [quote=引用 4 楼 starytx 的回复:] 同名变量的作用于问题。一般遵循最“近”原则，也就是大括号内定义的会覆盖大括号外定义的 覆盖效果之针对于该程序段内部吗？因为我另外做测试发现重新定义的数组只对该内部有用，到外部之后起作用的依然是一开始定义的数组[/quote]到了外部都超出该变量的作用域了，当然就没他啥事了。[/quote] 谢谢解答

user: user-0
content: 引用 11 楼 a515360208 的回复:[quote=引用 9 楼 u013955671 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] //编写程序输出下列图形： //00001 //00010 //00100 //01000 //10000 #include <stdio.h> int main() {     int i;      for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);     return 0; }  赞！！！！可是这是怎么实现的呀没看懂[/quote] "00001000"也有一个地址，%s都是从字符串指向的地址开始的，上面的程序等价于：  char *p = "000010000"; for (i=0;i<5;i++)     printf("%.5s\n", p + i);[/quote] 谢谢解答

user: user-8
content: 引用 9 楼 u013955671 的回复:[quote=引用 5 楼 zhao4zhong1 的回复:] //编写程序输出下列图形： //00001 //00010 //00100 //01000 //10000 #include <stdio.h> int main() {     int i;      for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);     return 0; }  赞！！！！可是这是怎么实现的呀没看懂[/quote] "00001000"也有一个地址，%s都是从字符串指向的地址开始的，上面的程序等价于：  char *p = "000010000"; for (i=0;i<5;i++)     printf("%.5s\n", p + i);

user: user-5
content: 引用 7 楼 u013955671 的回复:[quote=引用 4 楼 starytx 的回复:] 同名变量的作用于问题。一般遵循最“近”原则，也就是大括号内定义的会覆盖大括号外定义的 覆盖效果之针对于该程序段内部吗？因为我另外做测试发现重新定义的数组只对该内部有用，到外部之后起作用的依然是一开始定义的数组[/quote]到了外部都超出该变量的作用域了，当然就没他啥事了。

user: user-0
content: 引用 5 楼 zhao4zhong1 的回复://编写程序输出下列图形： //00001 //00010 //00100 //01000 //10000 #include <stdio.h> int main() {     int i;      for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);     return 0; }  赞！！！！可是这是怎么实现的呀没看懂

user: user-0
content: 引用 3 楼 PDD123 的回复:第二个能正确显示。 在花括号括起来的程序段内外有相同名字的变量时，程序段优先使用的是花括号内的变量，第一个程序中在定义括号内的a前用的是括号外的a，而定义括号内的a时使用的是另外的空间，并没有把括号外的a的值进行重置。  第二个虽然正确，但是括号外的a不起作用，最好删了。  强烈建议：在一个变量还在起作用的时候，不要定义同名的变量！ 你好~程序优先选择花括号内的变量，第一个程序中在定义括号内的a前用的是括号外的a，而定义括号内的a时使用的是另外的空间，并没有把括号外的a的值进行重置。但是为何第二个将它的位置提前就可行，依然是将其放置在括号内部啊

user: user-0
content: 引用 4 楼 starytx 的回复:同名变量的作用于问题。一般遵循最“近”原则，也就是大括号内定义的会覆盖大括号外定义的 覆盖效果之针对于该程序段内部吗？因为我另外做测试发现重新定义的数组只对该内部有用，到外部之后起作用的依然是一开始定义的数组