C语言高级编程:数组和指针作为函数形参
测试环境:
win10 x86-64
gcc: x86_64-pc-cygwin
1. 说明
1)作为函数形参时(也只有这种情况),数组与指针等同,int *p = int a[],p和a在函数内部都是指针
2)数组作为函数形参时将被转化为指向数组第一个元素的指针,无论是int a[10]还是int a[]形式的形参,在函数内部都是int *a形式指针
3)没有办法直接将数组本身传递给函数(可以间接传递,如将数组封装再结构体内~~~)
3)由于规则2),下列用法均正确,it's amazing!
fun(&i);
fun(p);
fun(a);
2. 代码:
#include <stdio.h>
#include <stdlib.h>void fun(int a[10])
{printf("fun: a[0] = %d\n", *a);
}void fun2(int a[])
{printf("fun2: a[0] = %d\n", *a);
}void fun3(int *a)
{printf("fun2: a[0] = %d\n", *a);
}int main()
{int i = 1;int *p = NULL;int a[10] = {5};p = &i;fun(&i);fun(p);fun(a);fun2(&i);fun2(p);fun2(a);fun3(&i);fun3(p);fun3(a);return 0;
}
3. 编译
无warning无error
4. 运行
D:\baoli\Desktopλ .\a.exefun: a[0] = 1fun: a[0] = 1fun: a[0] = 5fun2: a[0] = 1fun2: a[0] = 1fun2: a[0] = 5fun2: a[0] = 1fun2: a[0] = 1fun2: a[0] = 5
C语言高级编程:数组和指针作为函数形参相关推荐
- 【C语言进阶】数组、指针、函数——传参篇
目录 写在前面 一.数组传参 一维数组传参 二维数组传参 二.指针参数 一级指针传参 二级指针传参 三.函数传参 四.看懂代码 写在最后 写在前面 上篇文章介绍了指针数组和数组指针,有兴趣的小伙伴可以 ...
- 【嵌入式】C语言高级编程-数组和结构体初始化(02)
00. 目录 文章目录 00. 目录 01. 初始化概述 02. 指定初始化数组元素 03. 指定初始化结构体成员变量 04. Linux内核中应用 05. 初始化总结 06. 附录 01. 初始化概 ...
- C语言高级编程:二级指针的赋值
测试环境:win10+cygwin --------------------------------- 在c语言中,经常会对二级指针变量(即指针的指针)进行赋值操作.如果要对一个二级指针进行赋值,不能 ...
- c语言高级程序设计第五版PDF,C语言高级编程.pdf
C语言高级编程 概述 由几个测试程序说开去 预编译与宏 高级预编译介绍 宏的高级用法 变量 变量分类详细解析 我的变量去哪儿了? 大小端对变量的影响 内存与指针 常见内存使用错误大观 指针,又是指针! ...
- Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)
Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...
- 鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc
c语言高级编程技术教程 图形显示方式与鼠标输入 c语言高级编程技术教程 图形显示方式和鼠标输入 图形显示方式和鼠标输入 问题的提出编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光 标将 ...
- c语言未初始化的指针下标访问是0,C语言的二数组的指针访问.doc
C语言的二数组的指针访问 二维数组的指针访问 --王炳华 指向二维数组的指针及用指针访问二维数组,是学习指针的最大难点.如果真正弄懂了这个问题,就可以说你学会了使用指针. 二维数组的指针 指针就是地址 ...
- c语言二维数组 ppt,C语言二维数组与指针.ppt
C语言二维数组与指针.ppt 好好考,全国计算机等级考试 二级C语言,第12讲 二维数组与指针,二维数组的定义 数组元素的引用及初始化 二维数组和指针 二维数组名和指针数组作为实参 二维数组程序举例 ...
- 高级编程中C语言属于,c语言高级编程
c语言高级编程 C高级编程 责任编辑:admin 更新日期:2005-8-6 深入了解C语言(函数的参数传递和函数使用参数的方法) tangl_99(原作) 关键字 C语言,汇编,代码生成,编译器 C ...
最新文章
- javascript之prototype总结常用方法
- c swap方法在哪个库里面_在编程竞赛中高效地编写C/C ++代码
- 2022/4/3刷题
- 搜索引擎是怎么删除重复网页的
- 答疑:有关一例EXT3文件系统故障
- 非线性光纤光学_1.56 m波段高能量百飞秒光纤激光器
- android listview添加数据_Android系统列表控件
- java datasource 配置_Spring boot 基于注解方式配置datasource
- Hive分区(静态分区+动态分区)
- 文件不存在的话创建文件 文件上传所遇到的问题、
- 服务器硬件工程师从入门到精通_硬件工程师必阅--如何“0基础”从入门到精通?(附CAD使用指南)...
- 7.20-7.24(2)
- 计算机汉字编码输入码,汉字编码、输入系统和码本
- Biobank genetic data探析(二)
- 火狐浏览器找不到书签了
- 正则表达式,分组,捕获组,反向引用,重复数字正则表达式 ,python 实现
- Resource.arsc文件格式解析
- PIP安装本地离线包whl
- java透视图_Eclipse透视图
- 报错信息:Avoid mutating a prop directly since the value will be overwritten
热门文章
- android notification 的总结分析
- shell中函数返回值
- 内存数据库到底有多快?
- wpf 切换搜狗输入法英文_搜狗输入法全新升级手写功能,中英数字自由写,告别切换丨本周新闻...
- Tomcat启动设置环境变量
- struts2,jsp,freemarker编程小技巧
- java取消按钮_Java Swing-单击取消按钮时不循环
- B. Bogosort codeforces(思维)
- Super-palindrome(思维)
- python基础总结--- 列表、内置函数(4-5)