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

有问题未解决(9.28)

#include <stdio.h>  int main()
{int a = 1;int b = 2;int c = 3;int arr[] = { a,b,c };arr[0] = 10;printf("%d\n", a);//打印结果为1;return 0;
}

颠覆认知了,或许也没有颠覆

arr是一个int类型的数组,他存的就是一个数,而不是变量,a的地址和arr的地址并不一样

char arr1[] = "hello bit";
printf("%c\n", *arr1);//h
printf("%c\n", *(arr1+1));//e

数组名+1,就是下一个元素的地址,int类型的数组名+1移动四个字节,char类型的数组名+1移动1个字节,数组的类型决定了数组名+1移动的距离

二维数组的数组名代表什么?

把二维数组想象成一维数组,二维数组的数组名代表的就是第一行的地址

不要写成 int* arr[3] = { &a,&b,&c };这个地方写成&a会有什么结果目前不确定,有待商榷

鹏哥之前讲过打印二维数组的多种形式,但是我忘了

a数组,b数组,c数组是独立的,并且不是连续的,只不过通过指针数组跳跃地将它们访问

#include <stdio.h>  int main()
{int a = 1;//0x0000004DD7AFFBC4//int类型是四个字节,32个比特位,a的地址加上32正好到b//错了,a和b并不是两个相邻的整型变量,真正相邻的整型变量的地址相差应该是4,// 一个字节代表一个地址,而不是一个比特位代表一个地址int b = 2;//0x0000004DD7AFFBE4int c = 3;int arr[] = { a,b,c };//char arr1[] = "hello bit";//printf("%c\n", *arr1);//h//printf("%c\n", *(arr1+1));//e//printf("%p\n", arr1);//printf("%p\n", &arr1[0] + 1);/* int a[] = {1,2,3,4,5};int b[] = {2,3,4,5,6};int c[] = {3,4,5,6,7};*//* int a = 0;int* p = &a + 1;printf("%p\n", p);8printf("%p\n", &a);4printf("%p\n", &a + 1);8*///a的地址是4,&a+1后的结果是8而不是5,说明变量的类型,会影响变量地址加减时的步长return 0;
}

int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int(*pa)[10] = &a;
printf("%p\n", pa);//pa相当于&a
printf("%p\n", *pa);//*pa相当于a,即数组名

&arr的步长是40,所以需要一个步长类型为40的指针来接收

数组名是首元素的地址,arr2的首元素类型是一级指针,一级指针的地址要放到二级指针里面,实际上,arr2就是一个二级指针

[5]之所以不能省略是因为arr的类型是int[5],它的步长是5,和指针类似,一般情况下,指针的类型要和传过去的地址的类型一样

相关文章:

  • Redis设计与实现 学习笔记 第一章 引言
  • 机器学习:opencv--特征检测
  • 切换笔记本键盘的启用与禁用状态
  • Java基础(Arrays工具类)(asList()方法)(详细)
  • 鸿蒙开发(NEXT/API 12)【硬件(接入手写套件)】手写功能开发
  • 《深度学习》卷积神经网络 数据增强、保存最优模型 原理解析及实例实现
  • 【自动驾驶】对2D框的四条边同时缩进
  • 【07】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Swiper轮播组件与样式结构重用
  • Linux下C开发使用小技巧
  • TIM定时中断
  • 17 vue3之tsx手写vite tsx插件
  • 每天学习一个技术栈 ——【Django Channels】篇(1)
  • Kafka与RabbitMQ:深入理解两者之间的区别
  • MySQL基础--表的增删改查
  • 时间技能物品竞品抢拍拍卖发布h5公众号小程序开源版开发
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS相对定位
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 交换综合实验一
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #控制台大学课堂点名问题_课堂随机点名
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (7)svelte 教程: Props(属性)
  • (day6) 319. 灯泡开关
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (done) 声音信号处理基础知识(4) (Understanding Audio Signals for ML)
  • (八十八)VFL语言初步 - 实现布局
  • (备份) esp32 GPIO
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)Mysql的优化设置
  • (转载)CentOS查看系统信息|CentOS查看命令
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net mvc 获取url中controller和action
  • .NET 发展历程
  • .Net 基于IIS部署blazor webassembly或WebApi
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET8使用VS2022打包Docker镜像
  • .net打印*三角形
  • .NET上SQLite的连接
  • .NET学习全景图
  • .Net中ListT 泛型转成DataTable、DataSet
  • ??eclipse的安装配置问题!??
  • @Autowired @Resource @Qualifier的区别