4 回答
TA贡献1775条经验 获得超8个赞
视情况而定
如果你的数组是追加一个元素的可以不用定义长度
如果你初始化一个列表然后要修改其中的值的话,就要定义长度了。
举个例子吧
a = []
for i in range(10):
a.append(i)
print a
b = [0 for i in range(10)] #也可以b = [0]*10
for i in range(10):
b[i]=i
print b
TA贡献1998条经验 获得超6个赞
(1)没有分清字符串和字符数组的区别: char* a="abcde";定义的是个字符串,它是一个占用了6个字节的字符串,其中前面5个保存:abcde,最后一个是\0(编译器自动加的);char str1[80]="This is a "定义了一个字符数组,可以保存80个字符,编译器不会加\0;你需要在后面手工加上; (2)没有分清函数定义和调用函数的区别: char *stract(str1,str2);这是定义了一个函数,这个函数的名称和系统的函数名称strcat刚好一样,不是调用函数;这个函数需要你自己去实现,你这里没有实现; stract(str1,str2)是调用函数strcat,编译器会按照你定义的头文件顺序去找; 由于你定义了str1和str2长度为80,因此后面的存储区均是0,因此,显示结果没有问题,如果你将str2长度定义为9个(你的后面字符串的长度,你就会发先第一个显示结果会降str1也打印出来,原因是你没有给str2加上\0;建议你注意这个问题,这就是臭名昭著的缓冲区溢出漏洞的来源之一。 你由于仅仅是定义了strcat函数,因此你的输出仍然是str1
添加回答
举报