首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组地址和数组名的有关问题

2012-03-20 
数组地址和数组名的问题。#includestdio.hint main(){void strcpy1(char *s,char *t)char *s[10]int i

数组地址和数组名的问题。
#include<stdio.h>
int main(){
void strcpy1(char *s,char *t);
char *s[10];
int i;
char *a="abcdef";
char *b;
strcpy1(b,a);
printf("%s\n",b);
  getch();
return 0;
}
void strcpy1(char *s,char *t)
{
while((*s++=*t++)!='\0')
;
}
执行上述代码时为什么会说我的b没有初始化??
如果改成char b[100];可以得出正确的结果。但是此时b不是一个数组名么??也可以在函数时执行b++??
另外问一下我声明了类似于char *b的变量,执行b++时,b++所指向的地址和以前b的地址是连续的吗??
如果我一直加下去,b;b++;b++;....这一切指向的地址都是连续的吗?

[解决办法]
1、你只是声明了一个char型指针b,但并没有给他申请内存空间,所以当然出为初始化的错误了。
char b[100]是声明了一个char型数组,编译器会对该数组初始化的。
初始化指针还有一个方法就是用malloc来直接给它分配内存空间。
2、你用b++的话,地址肯定是连续的,但由于你未对b初始化,它的值可能是任意的,也就是说
它可能指向内存中任意地点,这样的指针使用起来是非常危险的,所以会出未初始化的编译错误。

热点排行