C语言字符数组问题#include<stdio.h> #define N 5 int main() { int i,j; char a[N][N]; for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]='*'; for(i=0;i<N;i++) {for(j=0;j<i;j++) printf(" "); for(j=0;j<N;j++) printf("%c",a[i][j]); printf("\n"); } return 0; } 谁能告诉我,第三个到第五个for是怎么运行得。最后输出是一个图案来得
因为str1定义的空间太小,输入的目的字符串已经造成了数组的越界:存储到str1中数据过长,已改写数组存储空间的后续空间所存储的数据。虽然你的程序很简单,使用的内存很小,有时系统未报错,但越界操作很可能会引起程序、系统崩溃,建议str1定义一个较大的空间,避免此类危险。
首先你要看懂fun()函数的,*x=*(x+i);就是把x之后的第i个数的值赋给x的。执行fun(a,2);后是把第三个元素的值赋给第一个元素的,所以a[0]=a[3]=3,输出的时候只输出了前四个数,也就是3234.不懂可以追问,望采纳!