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

设计公司资质等级谷歌seo顾问

设计公司资质等级,谷歌seo顾问,wordpress标签归类,自己做网站商城需要营业执照吗文章目录 前言一、数组名的理解二、使用指针访问数组三、一维数组传参本质四、二级指针五、指针数组六、指针数组模拟二维数组 前言 不把指针学的扎实&#xff0c;可不敢说自己C语言基础学的好 一、数组名的理解 #include <stdio.h> int main() {int arr[10] { 1,2,3,4…

在这里插入图片描述

文章目录

  • 前言
  • 一、数组名的理解
  • 二、使用指针访问数组
  • 三、一维数组传参本质
  • 四、二级指针
  • 五、指针数组
  • 六、指针数组模拟二维数组

前言

不把指针学的扎实,可不敢说自己C语言基础学的好

一、数组名的理解

#include <stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };printf("&arr[0] = %p\n", &arr[0]);printf("arr = %p\n", arr);return 0;
}

输出结果

在这里插入图片描述

所以,数组名就是数组第一个元素的地址

数组名就是数组⾸元素(第⼀个元素)的地址是对的,但是有两个例外:
sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩,
单位是字节
&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)
除此之外,任何地⽅使⽤数组名,数组名都表⽰⾸元素的地址。

#include <stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };printf("&arr[0] = %p\n", &arr[0]);printf("&arr[0]+1 = %p\n", &arr[0] + 1);printf("arr = %p\n", arr);printf("arr+1 = %p\n", arr + 1);printf("&arr = %p\n", &arr);printf("&arr+1 = %p\n", &arr + 1);return 0;
}

输出结果

&arr[0] = 0077F820
&arr[0]+1 = 0077F824
arr = 0077F820
arr+1 = 0077F824
&arr = 0077F820
&arr+1 = 0077F848

这⾥我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是
⾸元素的地址,+1就是跳过⼀个元素。
但是&arr 和 &arr+1相差40个字节,这就是因为&arr是数组的地址,+1 操作是跳过整个数组的。

二、使用指针访问数组

#include<stdio.h>int main() {int arr[10] = { 0 };int sz = sizeof(arr) / sizeof(arr[0]);int* p = arr;int i = 0;for (i = 0; i < sz; i++) {scanf("%d", p + i);//也可以写成scanf("%d",arr+i);}for (i = 0; i < sz; i++) {printf("%d ", *(p + i));}return 0;
}

本质上p[i] 是等价于 *(p+i),arr[i] 应该等价于 *(arr+i)

三、一维数组传参本质

之前我们都是在函数外部求数组的个数,那如果在函数内部呢?

数组名是数组⾸元素的地址;那么在数组传参的时候,传递的是数组名,也就是说本质上数组传参传递的是数组⾸元素的地址。

所以函数形参的部分理论上应该使⽤指针变量来接收⾸元素的地址。那么在函数内部我们写
sizeof(arr) 计算的是⼀个地址的⼤⼩(单位字节)⽽不是数组的⼤⼩(单位字节)。正是因为函
数的参数部分是本质是指针,所以在函数内部是没办法求的数组元素个数的。

#include<stdio.h>void test(int arr[]) {printf("%d\n", sizeof(arr));
}void test(int* arr) {printf("%d", sizeof(arr));
}int main() {int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };test(arr);return 0;
}

⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。

四、二级指针

是变量都有地址

那么,指针变量也是变量,它的地址在哪呢?

存放在二级指针

在这里插入图片描述

*ppa 通过对ppa中的地址进⾏解引⽤,这样找到的是 pa , *ppa 其实访问的就是 pa

int b = 20;
*ppa = &b;//等价于 pa = &b;

**ppa 先通过 *ppa 找到 pa ,然后对 pa 进⾏解引⽤操作: *pa ,那找到的是 a .

**ppa = 30;
//等价于*pa = 30;
//等价于a = 30;

五、指针数组

指针数组,是一个数组,数组里面每一个元素的类型都是指针类型

在这里插入图片描述

数组指针的每个元素是地址,⼜可以指向⼀块区域。

六、指针数组模拟二维数组

#include<stdio.h>int main() {int arr1[5] = { 1,2,3,4,5 };int arr2[5] = { 2,3,4,5,6 };int arr3[5] = { 3,4,5,6,7 };int* parr[3] = { arr1,arr2,arr3 };int i = 0;int j = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 5; j++) {printf("%d ", parr[i][j]);//printf("%d", *(*(parr + i) + j));//parr[i][j] == *(*(parr + i) + j);}printf("\n");}return 0;
}

在这里插入图片描述
parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。

上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。

在这里插入图片描述

http://www.hyszgw.com/news/24517.html

相关文章:

  • 有了网站怎么写文章企业推广策划方案
  • ps做汽车网站下载烟台seo关键词排名
  • 凯里网站建设流程百度搜索使用方法
  • 广州工商注册代办班级优化大师官方免费下载
  • 上海专业网站建设平台网络广告联盟
  • 珠宝首饰网站源码网络营销渠道可分为
  • 电商网站业务流程图百度指数明星搜索排名
  • 青浦营销型网站建设seo快速排名是什么
  • 淄博网站制作公司国际时事新闻最新消息
  • 网站开发专业公司有哪些百度青岛代理公司
  • php做商城网站怎么做好西安做网站的网络公司
  • 网站开发的行业情况分析媒体:北京不再公布各区疫情数据
  • 免费个人网站建站能上传视频吗企业网站建设专业服务
  • 网站搭建需要什么技术网络市场营销策划书
  • 网站 运营工作如何做友链网站
  • 怎么做推广网站赌场如何在百度上发表文章
  • 网站开发设计书籍想做网站找什么公司
  • 网站建设设计设计公司哪家好seo关键词优化排名
  • 个人网站样式网盘资源
  • 哪些网站可以做任务赚钱的保定网站建设报价
  • 网站维护服务公司市场营销十大经典案例
  • 做spa会所网站长春网站推广排名
  • 做暧视频免费网站哪里有培训网
  • 公司企业邮箱如何注册郴州seo
  • 海口网站建设 海南小黄网络东莞做网站的公司有哪些
  • 企业标准官网入口seo流量优化
  • 专业的做网站强强seo博客
  • 简单个人网站制作百度快照优化排名推广怎么做
  • 深圳微信分销网站公司清远网站seo
  • 建设银行上海分行招聘网站短视频代运营公司