首页 > 试题广场 >

指出下列代码有什么错误。 (1) void test

[问答题]
指出下列代码有什么错误。
(1)
void test1(){
    char string[10];
    char* str1="0123456789";
    strcpy(string,str1);
}
(2)
void test5(){
    int iv=0;
    int &reiv;
    int *pi;
    pi=&iv;
}

(1)str1长度11,strcpy方***溢出 (2)声明一个引用,引用不能为空,必须同时初始化
发表于 2017-08-19 00:15:09 回复(0)
test1中, str1的长度实际为11,因为包括‘\0’字符,拷贝到string里面去后,string会越界。

test2中, 引用reiv为空,必须同时初始化。
发表于 2017-09-02 14:06:41 回复(0)
int &reiv;//错误,声明一个引用,但引用不能为空,必须同时初始化 
int &reiv2=iv;//声明了一个引用,并同时初始化,也就是reiv2是iv的别名 
int *pi;//正确,声明了一个指针,但是没有定义指针所指向的地址 
*pi=5;//错误,整数指针pi没有指向实际地址,在这种情况下给它赋值是错误的 
pi=&iv3;//正确,指针指向iv3的实际地址 
const double di;//错误,const常量赋值时,必须同时初始化
const double maxWage=10.0;//const常量赋值并同时初始化 
const double*pc=&maxWage;//const常量指针赋值并同时初始化
编辑于 2017-08-19 15:59:27 回复(0)
char* str1="0123456789"; 应该使用单引号

发表于 2019-04-29 19:38:16 回复(0)
(1)str1的实际存储长度是11,最后有一个“\0”, string开辟长度为10,strcpy时溢出。
(2)pi=&iv;错误,iv是整型变量,不能把其地址赋给指针变量,可以改为*p=iv;或者pi=reiv;
发表于 2017-08-29 19:26:27 回复(0)
(1)string 内存不够 str1包含结束标志符 共11个char类型

(2)int &reiv; //引用必须在定义是同时初始化
         pi=&iv;    //定义是没有分配内存 没有指向 不可以赋值


发表于 2017-08-23 11:15:33 回复(0)
你告诉我这是java分类下的题目。。。。
发表于 2017-08-22 18:04:20 回复(0)