【让你从0到1学会C语言】指针/数组传参以及static关键字

这篇具有很好参考价值的文章主要介绍了【让你从0到1学会C语言】指针/数组传参以及static关键字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


作者:喜欢猫咪的的程序员

专栏:《C语言》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》

c语言函数返回指针数组 static,C语言,c语言,数据结构,算法


如果对 指针了解不多的话,请先看我的另外一篇博客:http://t.csdn.cn/0rd9Dhttp://t.csdn.cn/0rd9D

指针传参:

  • 二维数组传参:
void Print1(int (*p)[5],int n,int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
printf("%d ", *(*(p + i) + j));
//p为二维数组第一行的地址,p+i为二维数组第i行的地址,*(p+i)为找到第i行的第一个元素
//*(p+i)+j为找到第i行的第j个元素的地址,*(*(p + i) + j)找到第i行的第j个元素。

}
printf("\n");
}
}
int main()
{
int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
Print1(arr,3,5);
//arr为二维数组,arr是数组名,数组名是首元素的地址,而二维数组的首元素是指向第一行数组的地址
return 0;
}

arr为二维数组,arr是数组名,数组名是首元素的地址,而二维数组的首元素是指向第一行数组的地址。

p为二维数组第一行的地址,p+i为二维数组第i行的地址,(p+i)为找到第i行的第一个元素,(p+i)+j为找到第i行的第j个元素的地址,((p + i) + j)找到第i行的第j个元素。


  • 指针/数组的类型判断: 

c语言函数返回指针数组 static,C语言,c语言,数据结构,算法

我们对第四个进行详细介绍

c语言函数返回指针数组 static,C语言,c语言,数据结构,算法


  • 一维数组传参:

arr2为首元素地址指向int*类型,而int**arr为指向一个一级指针的指针。两种相同!!!

c语言函数返回指针数组 static,C语言,c语言,数据结构,算法


  • 二维数组传参:

c语言函数返回指针数组 static,C语言,c语言,数据结构,算法


  •  一级指针作为函数参数:

c语言函数返回指针数组 static,C语言,c语言,数据结构,算法

  • 二级指针作为函数参数

指针数组p作为数组名为首元素地址,而指针数组又是指向int*,所以p传参就是指针指向指针。

c语言函数返回指针数组 static,C语言,c语言,数据结构,算法


  1. static关键字:

在程序中使用static

变量

  • 局部变量

普通的局部变量存在于栈区。如果未初始化,编译器不会为他初始化。

静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。

  • 全局变量

全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化。

普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用。也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。

静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。

在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用。

  • 函数

函数的使用方式与全局变量类似,在函数的返回类型前加上static,就是静态函数。其特性如下:

静态函数只能在声明它的文件中可见,其他文件不能引用该函数

不同的文件可以使用相同名字的静态函数,互不影响文章来源地址https://www.toymoban.com/news/detail-575726.html

到了这里,关于【让你从0到1学会C语言】指针/数组传参以及static关键字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【进阶C语言】进阶指针--学会所有指针类型

     本节内容大致目录: 1.字符指针 2.指针数组(数组) 3.数组指针 (指针)--比较重要 4.函数指针--比较重要 5.函数指针数组--用的较少 6.指向函数指针数组的指针--只需要了解就可以 需要掌握每一种类型的符号和用处。 前言:字符指针是一种指针,是众多指针类型中的一种。

    2024年02月07日
    浏览(28)
  • c语言中为什么函数传参大多数用指针类型

    在C语言中,函数传参大多数使用指针类型的原因主要有两个: 允许在函数内部修改实参的值:C语言中的函数参数传递是按值传递的,即将实参值拷贝一份到形参中进行操作,对参的修改不会影响实参。而通过使用指类型参数,可以将实参的地址传递给函数,从而在函数内部

    2024年02月09日
    浏览(32)
  • 七天学会C语言-第六天(指针)

    指针变量与普通变量是C语言中的两种不同类型的变量,它们有一些重要的区别和联系。 普通变量 是一种存储数据的容器,可以直接存储和访问数据的值。: 在例子中,变量num是一个普通整数变量,它直接存储了值10。 指针变量 是一种特殊类型的变量,它存储的是内存地址

    2024年02月08日
    浏览(37)
  • 【C语言】让你不再害怕“指针”【知识点详解】

    目录 一.什么是指针为什么需要指针? 1.什么是指针? 2.为什么需要指针? 以一个代码为例观察地址:(这里我们可以通过调试和打印两种方式观察) 1.调试观察: 2.打印观察(地址是用%p 打印): 二.地址编号的来源指针变量的大小 产生来源 指针变量大小 三.指针类型  

    2024年02月08日
    浏览(37)
  • C语言 ——指针数组与数组指针

    目录 一、二维数组 二、指针数组 (1)概念  (2)书写方式 (3)指针数组模拟二维数组 三、数组指针 (1)概念 (2)使用数组指针打印一维数组  (3)模拟二维数组的传参 首先,我们要理解一下二维数组和指针变量之间的一些相关概念。 二维数组 : int arr [ 3 ][ 5 ]  

    2024年02月13日
    浏览(36)
  • 【C语言进阶】指针数组 —— 数组指针

    🎬 鸽芷咕 : 个人主页  🔥 个人专栏 : 《C语言进阶篇》 《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,前面我们已经把指针大部分内容给学完了,今天就给大家带来数组指针or指针数组!    ⛳️ 很多说这俩名字不是差不

    2024年02月14日
    浏览(25)
  • C语言--指针详解(下)--字符指针、数组指针、指针数组、函数指针、函数指针数组(转移表)

    在C语言中有一种指针类型为字符指针 char*,常用其来表示字符,使用如下: 除了上述用法之外,还可以有以下的用法: 在上面的代码中,字符 \\\" hello word \\\"是常量字符串,将\\\"hello word\\\"放入 pstr 指针的实质是将第一个字符 “ h \\\" 的地址传递给了 pstr ,通过首字符 ” h \\\" 就可以访问

    2024年02月03日
    浏览(36)
  • 【C语言】函数调用及创建,并将数组传参到函数

      🎥 岁月失语唯石能言的个人主页         🔥 个人栏专: 秒懂C语言 ⭐ 若在许我少年时,一两黄金一两风      目录 前言 一、函数的概念 二、库函数 2.1 标准库和头文件 2.2库函数的使用方法 2.2.1功能 2.2.2库函数的头文件 2.2.3例子 2.2.4库函数文档的一般格式 三、自定义

    2024年02月04日
    浏览(32)
  • 【go语言基础】指针数组和数组指针

    (1)指针数组: 存储指针的数组,也叫存储地址的数组,简单说就是存储地址的。 首先它是一个数组,数组中的元素都是指针(地址)。 (2)数组指针: 首先它是一个指针,存储的是指向数组的指针。 (1)指针数组 定义: 注意:首先是一个数组,将数组中的元素定义为

    2024年02月13日
    浏览(38)
  • 【C语言初阶】初学必看,深入了解指针的概念!看完让你不在害怕指针(图文并茂)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,今天给大家带来的指针篇的初阶,带你先从底层一步步理解指针!    ⛳️ 指针可以说是C语言最重要的部分了!俗话说

    2024年02月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包