LinuxC语言使用数组的几个常见问题

举报
CodeAllen 发表于 2021/10/29 22:37:13 2021/10/29
1.4k+ 0 0
【摘要】 LinuxC语言使用数组的几个常见问题 正文(1)数组的下标总是从0开始吗?(2)可以使用数组后边的一位元素的地址吗?(3)小心对待数组后边的元素地址(4)数组作为参数传递给函数时,可以通过siz...


正文

(1)数组的下标总是从0开始吗?

是的

a[MAX] 表示的元素是从a[0] 到 a[MAX - 1] , a[MAX]是有效的地址,不过不是数组中的元素

(2)可以使用数组后边的一位元素的地址吗?

可以,但是应该尽量避免,因为可能会破坏地址中的数据

(3)小心对待数组后边的元素地址

所以要小心对待数组后边的元素地址

(4)数组作为参数传递给函数时,可以通过sizeof 得到数组的大小吗?

不可以
做参数时得不到数组的大小,因为传递的是数组的第一位元素的地址


引深

怎么告诉函数数组大小呢?

第一种方式是将数组和表示数组的大小的值一起传递给函数

例如,memcpy函数
memcpy(dest,source,MAX);

第二种方式是引入规则来结束一个数组

比如以空指针结束的字符指针数组,空指针告诉函数什么时候结束

void printMany(char *string[])
{
    int i;
    i = 0;
    while(string[i] != NULL)
    {
        puts(string[i]);
        ++i;
    }
}

  
 

C语言程序员常用指针来代替数组下标,通常会将上述函数编写的更隐蔽一些

void printMany(char * strings [])
{
    while(*strings)
    {
        puts(*strings++);   //相当于while(*strings != NULL)
    }
}

  
 

在写函数注释的时候最好写明如何获取数组参数的大小,不建议直接写具体数字


关注我

我的首发平台是【CodeAllen】,欢迎关注并回复“1024”进入资料群获取免费学习资料
在这里插入图片描述

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/108307228

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。