C 语言传递数组给函数的三种形式

以下内容来自菜鸟教程,贴在此做笔记

方式 1

形式参数是一个指针:

void myFunction(int *param)
{
.
.
.
}

方式 2

形式参数是一个已定义大小的数组:

void myFunction(int param[10])
{
.
.
.
}

方式3

void myFunction(int param[])
{
.
.
.
}

①这三种方式就是数组作为参数的时候形式,在实际传递过去的时候,我们给这个参数传递的是一个指针

例如:

int balance[100]

myFunction( balance) ;

注意首地址和指针的区别:

②数组首地址为一个常量,而指针是一个变量
③数组首地址不可以作为左值(常量不可以作为左值),而指针可以

例如:

:int a[]

:  a=1;是错误的

④数组名也是指针,但是为什么不能被赋值?

:数组名在表达式中表示指向首元素的指针常量,这个常量运行时才被分配到栈中,既然是常量当然不允许修改,一旦定义就不能再被赋值了。

⑤c中不支持函数返回局部变量的地址?

函数中不能返回局部变量,因为在c中这些局部变量都是存储在栈中的,随着他们的作用域的消失而消失,局部变量的指针也是局部变量。如果我们要返回一个局部变量的指针

有两种方法

一、把这个指针声明为static

二、自己为这个指针所指的内容申请空间,这样的话只要自己没有释放这个变量,这个变量在整个程序的运行过程中就会一直存在

    原文作者:代码敲上天.
    原文地址: https://blog.csdn.net/m0_52226803/article/details/120972108
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞