当前位置: 首页 > news >正文

指针数组与数组指针的理解

typedef struct vexnode
{int key;struct arcnode *next;
}vexnode, adjlist[MVNUM];
void init(adjlist *list);
void init(adjlist *list) {for(size_t i = 0; i < MVNUM; i++){list[i].key = i;list[i].next = NULL;}
}

上述代码编译的时候没有报错,但是运行的时候,出现错误,list的内存信息指向了一些未知地方。

这里init函数中的形参是指向结构体数组的指针,以上访问list[i]是不正确的。虽然list数组已经分配了地址,但是*list是一个指针,list+1指向了一个未知的位置,而不是list[1].

指针在C语言中有着举足轻重的地位。指针的本体是一个整形地址,地址在汇编中是很常见的概念,硬件语言中,地址信息一般以数字的形式存放与代码中,只是C语言为了隐藏硬件中的细节,从而定义了指针的概念。

指针数组与数组指针

    char *a[] = {"gde","abc","cdd","acef","bdghs"};//char **p = a;

从上述代码看:

a是一个数组,这个数组存放了若干字符串,而a[i]就是这些字符串的首地址。

所以a是一个指针数组。

void print(char **p, int n) {for(int i = 0; i < n; i++) {printf("The %dth string is:%s\n", i+1, *p++);}}

二维指针*p指向的是a[0], (*p+1)指向的是a[1].

指针p是指向二维数组的一个指针,即数组指针。可以通过二维指针来访问二维数组。

**p与(*p)[5]是等价的,可以理解为指向字符串数组的指针。

相关文章:

  • 前端基础:1-2 面向对象 + Promise
  • 4、设计模式之工厂模式
  • C语言常用的内存操作函数
  • 打豆豆game
  • 带你玩转OpenHarmony AI:打造智能语音子系统
  • SpringBoot基础详解
  • 指针变量加1为什么地址加了4?
  • Python01:初入Python(Mac)
  • 【计算机视觉(3)】
  • Docker 安装最新版MongoDB 限制内存 配置权限
  • 电影《朝云暮雨》观后感
  • SW 草图明显显示
  • C++---运算符重载
  • VUE3好看的酒网站模板源码
  • [猫头虎分享21天微信小程序基础入门教程]第13天:小程序的表单与用户输入处理
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2017-08-04 前端日报
  • 2017-09-12 前端日报
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • DataBase in Android
  • JS函数式编程 数组部分风格 ES6版
  • magento 货币换算
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue.js 移动端适配之 vw 解决方案
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 初识 beanstalkd
  • 浮动相关
  • 老板让我十分钟上手nx-admin
  • 类orAPI - 收藏集 - 掘金
  • 排序算法之--选择排序
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (52)只出现一次的数字III
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (接口自动化)Python3操作MySQL数据库
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)LINQ之路
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Memory Profiler的使用举例
  • .NET Micro Framework初体验
  • .NET6实现破解Modbus poll点表配置文件
  • .NET开源、简单、实用的数据库文档生成工具
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/fstab 只读无法修改的解决办法
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [.net]官方水晶报表的使用以演示下载