数组的初始化和简单使用

数组的初始化和简单使用关于数组 有好多值得我们注意的地方 今天就来和大家浅谈一下数组的故事

关于数组,有好多值得我们注意的地方,今天就来和大家浅谈一下数组的故事。(以下操作在32位系统下进行)

1.数组的初始化

数组的初始化有这样几个点需要我们注意:
①如果我们只是定义了一个数组但并未对其初始化时,数组中的素全是随机值;
②当我们初始化数组的素(注意是从第一个素开始初始化)小于数组的大小时,其余未初始化的数组素均被编译器初始化为0;例如:int arr[5]={1,2};
③当我们有确定的素个数时,在定义数组时也可以不必标明数组大小,编译器会自动计算其大小;例如:int arr[]={1,2,3};
注意:在C语言中还有一种不太常见的初始化方法,就是给指定素进行初始化;例如:
这里写图片描述

这里写图片描述

这里,我们可以看到,这种初始化方法在给指定素初始化后,其余素均被初始化为0。

注意了,我刚刚所说的方法仅仅是在c语言语法中,那如果在c++语法中呢?
这里写图片描述

我们可以看到,对于同样一段代码,在c++中是无法通过编译的,有可能是c++的语法更为严格一些,如果大家有兴趣可以探索一番,我们可以一起交流,共同学习。

2.数组的使用

今天就简单的为大家介绍一下数组的使用,让大家可以进一步了解数组(当然,今天我们主要以一维整形数组为例
int main()
{
int arr[] = {1,2,3,4,5};

printf("%d\n",sizeof(arr)); printf("%d\n", sizeof(arr+0)); printf("%d\n", sizeof(*arr)); printf("%d\n", sizeof(arr+1)); printf("%d\n", sizeof(arr[1])); printf("%d\n", sizeof(&arr)); printf("%d\n", sizeof(&arr+1)); printf("%d\n", sizeof(&arr[0])); printf("%d\n", sizeof(&arr[0]+1)); system("pause"); return 0; 

}

看到上面这段代码,不知道大家计算出来的结果怎么样,可以对下答案哦!
这里写图片描述

下面我将为大家分析一下上面这段代码:注:在32位环境下测试结果
我们要注意对于sizeof操作符和&操作符:
当数组名单独出现时,它代表着整个数组的地址(尽管它的地址和数组首素地址相同),sizeof(arr)就相当于求整个数组的大小;
* 对于arr+0我们可以看到,数组名并不是单独出现,因此,当数组名并不是单独出现时,它表示数组首素的地址,地址也就四个字节*
*arr,这里arr也并不是单独出现,它也就代表数组的首素地址,然后对它进行解引用,*arr表示数组的首素;
arr+1,表示数组的第二个素的地址,因为是地址,所以大小仍为4;
⑤这个我也就不用多说了吧!
对于&操作符而言,当只有arr时,&arr表示取整个数组的地址;
&arr+1,这里arr并不是单独出现,arr表示数组首素的地址,则&arr+1表示第二个数组素的地址;
&arr[0],[]的优先级比&高,因此,&arr[0]表示取数组的第一个素的地址,当然,地址的大小为4个字节;
⑨&arr[0]+1,也就表示数组第二个素的地址;

字符数组初始化

①char arr[ ]={‘a’, ‘b’,’c’,’d’,’e’};
②char arr[ ]=”abcde”;//字符串数组
这两种方式的不同之处在于:第二种的素个数比第一个多了一个‘/0’。

我们看一段代码进行简单的应用
int main()
{
char arr[] = {‘a’,’b’,’c’,’d’,’e’,’f’};
printf(“%d\n”,strlen(arr));//随机值 因为数组中没有‘/0’,所以strlen无法计算出确定的值
printf(“%d\n”, strlen(arr+0));//随机值
printf(“%d\n”, strlen(&arr));//随机值
printf(“%d\n”, strlen(&arr+1));随机值
system(“pause”);
return 0;
}
加上一个‘/0’
int main()
{
char arr[] = {‘a’,’b’,’c’,’d’,’e’,’f’,’0’};
printf(“%d\n”,strlen(arr));//6
printf(“%d\n”, strlen(arr+0));//6
printf(“%d\n”, strlen(&arr));//6
printf(“%d\n”, strlen(&arr+1));//随机值
system(“pause”);
return 0;
}

定义一个字符串常量:
char *str=”abcdef”;
int main()
{
char *str = “abcdef”;
printf(“%d\n”,sizeof(str));//4 地址的大小为4个字节
printf(“%d\n”, sizeof(str+1));//4 这也是一个地址,并且是第二个字符的地址
printf(“%d\n”, sizeof(*str));//1 表示第一个字符 大小为一个字节
printf(“%d\n”, sizeof(str[0]));//1
printf(“%d\n”, sizeof(&str));//4 注意这是指针变量str的地址,不是这个常量字符串的地址
printf(“%d\n”, sizeof(&str+1));//4
printf(“%d\n”, sizeof(&str[0]+1));//4
system(“pause”);
return 0;
}

今天的文章 数组的初始化和简单使用分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-17 16:51
下一篇 2024-12-17 16:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/88802.html