鱼C论坛

 找回密码
 立即注册
查看: 2940|回复: 4

引用refernce

[复制链接]
发表于 2022-8-7 16:28:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引用起别名主要用作函数的参数,代替了指针,简化了操作,但是有人给数组起别名,是不是多此一举,数组名就是地址,用不着起别名吧,希望老师说一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-7 17:18:29 From FishC Mobile | 显示全部楼层
比如呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-7 18:06:03 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-8-7 18:07 编辑

例子 1:
C
#include <stdio.h>

void swap(int *A, int *B) // 只能用指针传入值
{
        int C = *B;
        *B = *A;
        *A = C;
}

int main(void) {
        int A = 13, B = 5;
        swap(&A, &B); // <--------------- 注意这里 ---------------
        printf("A: %d\n", A);
        printf("B: %d\n", B);
}


C++
#include <iostream>

void swap(int &A, int &B) // 函数参数引用 &
{
        int C = B;
        B = A;
        A = C;
}

using std::cout, std::endl;
int main(void) {
        int A = 13, B = 5;
        swap(A, B); // <--------------- 注意这里 ---------------
        cout
                << "A: " << A << endl
                << "B: " << B << endl;
}





例子 2:
C
#include <stdio.h>

int main(void) {
        int arr[3][3] = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
        };

        for (int i = 0; i < 3; ++i)
        {
                for (int j = 0; j < 3; ++j)
                {
                        printf("%d ", arr[i][j]);
                }
        }
        return 0;
}


C++
#include <iostream>

using std::cout, std::endl;
int main(void) {
        int arr[3][3] = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
        };

        for (auto& nums : arr) // <--------------- 注意这里,这里的 nums 就是数组引用
        {
                for (int num : nums) // <--------------- 注意这里 ---------------
                {
                        cout << num << " ";
                }
        }
        cout << endl;
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-8 09:55:37 | 显示全部楼层
很神奇,前面的可以理解,后面的没有找到相关的视频教程,可能我没有说明白,其实我的本意是这样的,有教程说:    arr[9]={1,2,3,4,5,6,7,8,9}; //定义数组    typedef int ARRAY[9];//给这种数组类型起名字
ARRAY &myarr=arr;//这样给数组arr起了一个别名myarr;我的意思是数组名本身就是地址,作为函数参数时可以直接使用,再起一个别名应该直接用数组名效果是一样的,没想到得到一种这样的表达方法,对老师实在是佩服,能不能给我说清楚一段最后面一段的意思,太神奇了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 14:01:13 | 显示全部楼层
hongdouhong 发表于 2022-8-8 09:55
很神奇,前面的可以理解,后面的没有找到相关的视频教程,可能我没有说明白,其实我的本意是这样的,有教程 ...

C语言中的数组分两类:bounded array(已知常量大小数组)和unbounded array(未知大小数组)。(还有一个VLA支持程度不是很好,先不管它)
bounded array就是int[9]一类带大小的,像这样typedef int ARRAY[9]; ARRAY &myarr=arr;实际上就是数组引用。函数传参时无法传bounded array,只能传int xxx[]一类的unbounded array,只带有内存地址信息。所以它实际上是一种不完整类型,不能创建相对应的引用类型。具体可以看:https://zh.cppreference.com/w/c/language/array
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 09:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表