浅析数组

数组

int a =10;  //定义一个变量并初始化

int b;        //定义一个变量未初始化,值为随机值

int arr[10]={1,2,3,4,5,6,7,8,9,10};   //定义一个数组并初始化

int brr[10];  //定义一个数组未初始化,里面的值为随机值

int crr[10]={1,2,3,4};   //数组前四位是1,2,3,4,剩下六位都是0

char drr[]={a,b,c,d,e};   //数组长度可以不写,系统会根据数组里面的内容自动分配长度

注:像数组和结构体都属于聚合类型,聚合类型如果只初始化一部分,那么剩余未初始化的部分值为0。

数组的下标是从0开始的,不是从1开始,这个要特别注意,防止越界。

sizeof:返回一个类型占用的字节数

sizeof(int )  4

sizeof(double)  8

sizeof(1)    4 //1是整型,占四个字节

sizeof(arr)   40 //arr是一个含有十个整型变量的数组,所以返回的是40

sizeof(drr)    5 //drr是一个有五个字符型变量的数组,所以返回的是 5 

那根据sizeof可以求数组长度吗?

当然可以了。40=4*10;5=5*1,数组占用的字节数就是数组的长度和每个变量占的字节数的乘积。所以求数组长度用总的字节数除以每个占的字节就可以了。

不同数组的类型可能不同,char,int ,double...能不能统一表示这些类型呢?

引入数组首元素,首元素也保证数组不会越界,不同数组首元素占用的字节不同,但是能代表每个变量占的字节数。

len:sizeof(arr)/sizeof(arr[0])

注意:只能在定义数组的同一个函数中求sizeof,一般是在主函数中使用,传参的时候使用。


逆序输出数组的值

怎么样逆置一个数组呢?只需要将第一个值和最后一个值交换,第二个和倒数第二个交换,直到交换到一半的时候,就完成了逆置。

#include<stdio.h>
void Reverse(int *arr,int len)  //数组逆置函数
{
 for(int i=0;i<len/2;i++)  //交换一半就够了,如果小于的是长度,就交换了两次,数组不会发生改变
 {
  int tmp=arr[i];
  arr[i]=arr[len-1-i];  //注意数组下标是从0开始,记得减一,否则就会越界。
  arr[len-1-i]=tmp;
 }
}
void Show(int *arr,int len)  //顺序打印函数
{
 for(int i=0;i<len;i++)
 {
  printf("%d ",arr[i]);
 }
}
int main()
{
 int arr[10]={1,2,3,4,5,6,7,8,9,10};
 int len = sizeof(arr)/sizeof(arr[0]);
 Reverse(arr,len); 
 Show(arr,len);
    return 0;
}

形参和实参类型要一致,整型数组一定要传长度



数组名表示整个数组,只有两种情况:

1.在定义数组的同一个函数中&arr+1,加的是整个数组的大小

2.在定义数组的同一个函数中求sizeof

其它情况,数组名表示数组首元素的地址。



扩展知识:

       c的标准规定,如果定义一个变量不初始化,值为随机值,数组也是一样,没有初始化都是随机值,但是我们实际应用会发现并不是一个随机值,而是-858993460,十六进制是0Xcccccccc,每次都是这个值,不是规定应该是一个随机值吗,为什么不随机了?

       标准规定确实是这样,但是如果我们用微软的编译器,比如vs,它就是上面那个值,这是微软故意设的标记,如果未初始化,就是这个值,如果想使用这个未初始化的值,程序会崩溃,在这里崩溃防止以后犯更大的错误,但是gcc并没有这样设置,里面就是一个随机值,也不会崩溃。

       定义数组的时候可以用变量吗?

       定义数组可以用常量,对于变量,不同的编译器规定的不同。C99已经允许可以用变量定义数组,所以在gcc里面可以用变量定义数组,但是微软的编译器不支持用变量定义数组。如果用微软的编译器,就不能用变量定义数组。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue中,可以使用v-for指令来进行循环遍历数组。 以下是一个示例代码,展示了如何使用v-for遍历数组并输出每个数组元素: <ul> <li v-for="item in names">{{ item }}</li> </ul> 其中,names是一个数组,item是遍历过程中每个数组元素的值。在上述代码中,通过v-for指令将数组names中的每个元素渲染为一个li标签,并输出元素的值。 如果你还需要获取数组元素的下标,可以使用以下的语法: <ul> <li v-for="(item, index) in names">{{ index + 1 }}. {{ item }}</li> </ul> 其中,index表示当前元素的下标,item表示当前元素的值。在上述代码中,通过v-for指令将数组names中的每个元素渲染为一个li标签,并输出下标值和元素的值。 通过使用v-for指令,你可以方便地在Vue中对数组进行循环遍历,并灵活地输出数组元素的值或下标。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [浅析vue中常见循环遍历指令的使用 v-for](https://download.csdn.net/download/weixin_38500222/12957661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue:循环遍历(v-for)](https://blog.csdn.net/yufengguanyun/article/details/123297502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值