C语言问题向高手请教

来源:百度知道 编辑:UC知道 时间:2024/05/15 08:47:12
类似于"char str[10];"之类的声明是否已分配内存单元?可否使用str指针所指向的地址是否非NULL?

比如这道题是否有错?如有,错在何处?
void test()
{
char str[10];
char* str1 = "0123456789";
strcpy(str, str1);
}
谢谢各位,特别是000dawn。
这是一个面试题里的改错题,我想应该是str[11],但是不清楚字符数组是否会自动在后面加个'\0',比如定义为10个,存储的是10个呢,还是在后面加个'\0'变成11个?

strcpy(拷贝字符串)
相关函数 bcopy,memcpy,memccpy,memmove

表头文件 #include<string.h>

定义函数 char *strcpy(char *dest,const char *src);

函数说明 strcpy()会将参数src字符串拷贝至参数dest所指的地址。

返回值 返回参数dest的字符串起始地址。

附加说明 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代。

数组是已经分配了存储单元的连续空间标识,程序可以正常运行。但,str应分配10+1的空间会更合理一些,最后一个'\0'也应算一个字符进去。

已分配内存单元,可以使用str指针所指向的地址是否非NULL。
你的程序没错。

申明数组是肯定已经分配内存了。所以也就可以用判断语句,看数组名是否为NULL。
你写的那个函数没错!结果应该是str 的值后str1的值相同。但注意,只是值相同而已,两个指针所指向的地址是完全不一样的!!! 再说看看有没有错可以自己到编译器下去运行试试,学编程不要太依赖别人了。。。加油吧!

支持二楼!!!````````.
你的数组str[]应该分配11个空间.