#include "stdio.h" #define MAX_LEN 20 void LoopMove(char *pStr,int steps) int main(void) for (i = 0; i < 10; i++) char str[]="hello world";
return 0;
说明: char str[]="hello world"; 此处,为什么str[] 改为*str则不能运行,出现错误: 因为char str[]="hello world"; 是分配一个局部数组。局部数组是局部变量,它所对应的是内存中的栈。 而 char *str="hello world";是分配一个全局数组。全局数组是全局变量,它所对应的是内存中的全局区域。 局部区的数据时可以修改的: char str[]="hello world"; str[0]='t';// ok 这里,str不占存储空间。 但是全局区域的值是不能进行修改的,如: char *str="hello world"; *str='t';// false 此时,str占用一个存储区域。 所以,回到上面的程序,当执行LoopMove(str,5);后,单步运行到strcpy(pStr,tmp);时,会给str赋值,此时就会出错:
|
联系客服