C语言字符数组不赋初值是默认为'\0'还是随机值
展开全部
普通数组没有赋初值,默认的数组元素值是随机数,不是0。
如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。
例子:
#includeint main(void)
{
int m = 0;
static int n;
int a = 5, b = 6, c = 7, d = 8;
int k = ((m = a>b) && (n = c>d))
printf("k = %d, m = %d, n = %d\n", k, m, n);
return 0;
}
输出结果为:k = 0, m = 0, n = 0;
当变量用static修饰,但是没有赋初始值的时候,编译器会自动给它赋值为0.但是如果不用static 只是 int n;这样定义的话,这个值就是未知的,因为编译器会给这个变量分配一块4字节的地址空间,这个地址里面的值就是n的值。
扩展资料
1、数组中的每个元素都有一个序号,这个序号从0开始,而不是从熟悉的1开始,使用数组元素时,指明下标即可。
2、数组下标必须是整数,取值范围为 0 ≥ index > length。
展开全部
那要看你指的不赋初值是哪种
如果是char a[10];
那这10个元素都是随机的
如果是char a[10] = {'a','b','c'};
那除了赋值的3个元素, 其他都是0
如果是char a[10];
那这10个元素都是随机的
如果是char a[10] = {'a','b','c'};
那除了赋值的3个元素, 其他都是0
追问
char c1[10],c2[]="gdpu";
strcpy(c1,c2);
puts(c1)
如果c1是随机值的话,为什么最后显示是gdpu,而不是十个随机字母+gdpu
追答
那是因为双引号会把最后一个元素(也就是第5个元素)置为0,而遇到0,打印就结束了, 你可以用for循环打印10个元素, 你会发现除了后面5个是随机的
如果你按照这种方式定义数组c2
c2[]={'g','d','p','u'},就能看出区别来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
放在main函数里,默认初值随机数。
放在main函数外,默认初值为0.
放在main函数外,默认初值为0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你想测试它是不是随机的。
用这一段代码:
#include<stdio.h>
#include <string.h>
int main(void)
{
char arr[1024];
char arr2[1024] = "good";
strcat(arr,arr2);
printf("arr = %s",arr);
return 0;
}
这样你就会看到arr里面充满了垃圾值。
或者用下面的代码:
#include<stdio.h>
#include <string.h>
int main(void)
{
char arr[1024];
char arr2[1024] = "good";
//strcat(arr,arr2);
//printf("arr = %s",arr);
strncpy(arr,arr2,4);
printf("arr = %s",arr);
}
用这一段代码:
#include<stdio.h>
#include <string.h>
int main(void)
{
char arr[1024];
char arr2[1024] = "good";
strcat(arr,arr2);
printf("arr = %s",arr);
return 0;
}
这样你就会看到arr里面充满了垃圾值。
或者用下面的代码:
#include<stdio.h>
#include <string.h>
int main(void)
{
char arr[1024];
char arr2[1024] = "good";
//strcat(arr,arr2);
//printf("arr = %s",arr);
strncpy(arr,arr2,4);
printf("arr = %s",arr);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询