C语言 数组指针 - C语言零基础入门教程
目录
- 一.简介
- 1.数组
- 2.指针
- 3.指针和数组区别
- 二.数组指针
- 三.猜你喜欢
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门
一.简介
1.数组
数组中的每个元素都有一个序号,这个序号从 0
开始,称为下标index
,例如,a[0]
表示第 1
个元素,a[3]
表示第 4
个元素。数组是一个整体,它的内存是连续的,内存示意图:
2.指针
指针很灵活,它可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存,以下是有效的指针声明:
int *p; /* 一个整型的指针 */
double *p; /* 一个 double 型的指针 */
float *p; /* 一个浮点型的指针 */
char *p; /* 一个字符型的指针 */
注意:不要忘记在指针类型和变量名中间还有一个 * 号,没有这个 * 号,只是定义了一个普通变量,这也是普通变量声明和指针声明的区别之一;
3.指针和数组区别
指针和数组区别这里不再继续啰嗦,可以直接参考文章:指针和数组区别
二.数组指针
数组指针:它实际上是一个指针,该指针指向一个数组。
int (*arr)[5];
//由于[]的优先级比*高,因此在写数组指针的时候必须将*arr用括号括起来
//arr先和*结合,说明arr是一个指针变量
//这句话的意思就是:指针arr指向一个大小为5个整型的数组。
int(*arr)[5]
表示指针 arr
指向一个大小为 5
个整型的数组,如下图:
示例代码如下:
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 数组定义和使用
//@Time:2021/06/19 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************///一维数组
int a[5] = { 1, 2, 3, 4, 5 };
//步长为5的数组指针,即数组里有5个元素
int (*p)[5];
//把数组a的地址赋给p,则p为数组a的地址,则*p表示数组a本身
p = &a;//%p输出地址, %d输出十进制
//\n回车
//在C中,在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址,它的类型取决于数组元素的类型。
printf("%p\n", a); //输出数组名,一般用数组的首元素地址来标识一个数组,则输出数组首元素地址
printf("%p\n", p); //根据上面,p为数组a的地址,输出数组a的地址
printf("%p\n", *p); //*p表示数组a本身,一般用数组的首元素地址来标识一个数组
printf("%p\n", &a[0]); //a[0]的地址
printf("%p\n", &a[1]); //a[1]的地址
printf("%p\n", p[0]); //数组首元素的地址
printf("%d\n", **p); //*p为数组a本身,即为数组a首元素地址,则*(*p)为值,当*p为数组首元素地址时,**p表示首元素的值1
printf("%d\n", *p[0]); //根据优先级,p[0] 表示首元素地址,则*p[0]表示首元素本身,即首元素的值1
printf("%d\n", *p[1]); //为一个绝对值很大的负数,不表示a[1]...表示什么我还不知道//二维数组
int a[4][5];int (*p)[5]=a;//指针p指向一个大小为5个整型的数组
*(p+i)是一维数组a[i][0]的地址;
(p+2)+3表示a[2][3]地址(第一行为0行,第一列为0列);
*(*(p+2)+3)表示a[2][3]的值;
三.猜你喜欢
- 安装 Visual Studio
- 安装 Visual Studio 插件 Visual Assist
- Visual Studio 2008 卸载
- Visual Studio 2003/2015 卸载
- C 语言逻辑运算符
- C 语言三目运算符
- C 语言逗号表达式
- C 语言 sizeof 和 strlen 函数区别
- C 语言 strcpy 和 strcpy_s 函数区别
- C 语言 memcpy 和 memcpy_s 区别
- C 语言 数组定义和使用
- C 语言 数组遍历
- C 语言 数组下标越界
- C 语言 数组内存溢出
- C 语言 数组下标越界和内存溢出区别
- C 语言 二维数组定义和使用
- C 语言 二维数组行数和列数计算
- C 语言 指针声明和定义
- C 语言 指针 p++ / p–
- C 语言 p++/§++/_(p++)/_p++
- C 语言 使用指针遍历数组
- C 语言 指针和数组区别
- C 语言 数组指针
- C 语言 指针数组
C语言 数组指针 - C语言零基础入门教程相关推荐
- C语言 指针数组和数组指针区别 - C语言零基础入门教程
目录 一.简介 1.数组 2.指针 3.指针和数组区别 二.指针数组和数组指针区别 1.指针数组 2.数组指针 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> ...
- C语言 指针数组 - C语言零基础入门教程
目录 一.简介 1.数组 2.指针 3.指针和数组区别 二.指针数组 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 1.数组 ...
- C语言 函数指针和指针函数区别 - C语言零基础入门教程
目录 一.函数指针和指针函数声明的区别 1.函数指针 2.指针函数 二.函数指针和指针函数调用的区别 1.函数指针的调用 2.指针函数的调用 三.猜你喜欢 零基础 Python 学习路线推荐 : C/ ...
- C语言 函数指针 - C语言零基础入门教程
目录 一.函数指针简介 1.常规函数声明 2.函数指针声明 二.函数指针实战 三.猜你喜欢 零基础 Python 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.函数指 ...
- C语言 野指针 - C语言零基础入门教程
目录 一.简介 二.野指针产生的原因 1.指针变量未初始化 2.指针释放后之后未置空 三.避免野指针产生 1.初始化时置 NULL 2.释放时置 NULL 四.猜你喜欢 零基础 C/C++ 学习路线推 ...
- C语言 void 指针 - C语言零基础入门教程
目录 一.指针简介 二.空指针 NULL 三.void 指针 四.重点总结 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.指针简介 ...
- C语言 typedef - C语言零基础入门教程
目录 一.typedef 简介 二.typedef 实战 1.typedef 定义基本数据变量 2.typedef 定义结构体 A.常规定义结构体 B.typedef 定义结构体 C.结构体使用 ty ...
- C语言 回调函数 callback - C语言零基础入门教程
目录 一.回调函数原理 二.回调函数简介 1.函数指针 2.指针函数 3.回调函数解释 三.回调函数实战 四.回调函数使用总结 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 ...
- C语言 函数不定长参数 - C语言零基础入门教程
目录 一.前言 二.函数不定长参数简介 1.va_start 2.va_arg 3.va_end 三.自定义不定长参数的函数 1.va_start/va_arg/va_end 案例一 2.va_sta ...
最新文章
- Python--数据存储:pickle模块的使用讲解
- 信号量Semaphore一篇文章叫你明白
- 微软安全管理解决方案 为企业安全保驾护航
- FM之NUMERIC_CHECK
- Django Form和ModelForm组件
- 不愿意和别人打交道_如果你的交际能力很差,不喜欢与人打交道,这3种职业最适合你...
- java中的位移运算符_java中的移位运算符(, , )
- 【算法】组合数学——排列数生成算法详解(一)
- TCP通过带外数据实现心跳检测机制
- git日志 每天导出 shell脚本
- 支持javascript的ppt软件_有哪些辅助工具,可以让PowerPoint软件更强大?
- python核心教程:min函数和max函数用法
- 这8个坏习惯加重体内湿气,一定要改掉!否则……
- BeagleBone Black 从零到一 (2 MLO、U-Boot) 转
- linux aria2c 百度云,使用Aria2c和百度网盘助手实现高速下载百度网盘资料
- 我的ROS学习之路——动起来的小海龟
- 企查查爬虫循环获取信息
- 使用Spring Boot构建微服务(文末福利)
- MySQL 教程(一)
- Photoshop各历史版本回顾以及系统要求
热门文章
- 项目版本管理的最佳实践:云效飞流Flow篇
- 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点
- 机器学习数据集哪里找:最佳数据集来源盘点
- Pod Preset玩转K8S容器时区自动配置 1
- ICDE:POLARDB定义云原生数据库
- 用WEB技术栈开发NATIVE应用:WEEX SDK原理详解
- 物联网避坑 3 大指南!
- Storm精华问答 | 遇到这些错误日志该如何解决?
- mysql 常见密码设置_设置mysql用户密码(5.6/5.7)、远程连接数据库、常用命令
- 我的世界服务器linux加mod,在Linux下搭建带MOD 我的世界(Minecraft)服务器