资讯专栏INFORMATION COLUMN

三文读透指针语法【上篇】@指针的进阶---字符指针+数组指针+指针数组+数组传参和指针传参

sshe / 656人阅读

摘要:本文重点字符指针指针数组数组指针数组传参和指针传参引在指针的初阶已接触过指针的概念,并介绍了如下内容指针是个变量,用来存放地址,地址唯一标识一块内存空间,所以地址也形象的被称作指针。解析指针数组指针数组即,存放指针的数组。


引:

在指针的初阶已接触过指针的概念,并介绍了如下内容

1.指针是个变量,用来存放地址,地址唯一标识一块内存空间,所以地址也形象的被称作指针。
2.指针大小是固定的4/8字节(32位平台/64位平台)。
3.指针是有类型的,类型决定被看待的视角,即决定了 指针 ± 整数 跳过的步长;指针解引用 时的访问权限。
4.指针的运算:指针 ± 整数;指针 - 指针;指针大小比较。

有关这部分内容还有好多细节,我还没写文章,为了使内容连贯后期会考虑补一篇。
这篇文章,将探讨有关指针的高级主题。
同时,《指针与数组面试题的解析》也在筹备中了,小伙伴们期待吧! 哈哈哈

正文开始@边通书

1.字符指针

字符指针有下面两种使用场景:
1.指向字符

2.指向字符串

那么就有这样一道面试题
小伙伴们先来自己做做做看呐。

#include int main(){	char str1[] = "hello Asi.";	char str2[] = "hello Asi.";	char *str3 = "hello Asi.";	char *str4 = "hello Asi.";	if (str1 == str2)		printf("str1 and str2 are same/n");	else		printf("str1 and str2 are not same/n");	if (str3 == str4)		printf("str3 and str4 are same/n");	else		printf("str3 and str4 are not same/n");	return 0;}

解析:

2.指针数组

指针数组即,存放指针的数组

写几段代码,感受一下它的使用:
代码1:

代码2:

代码3:

这里 指针±整数 的等价思想还是比较有用的。

3.数组指针

数组指针是什么?指针还是数组?
答案是:指针。其实做一个类比就好。
先做一个小小的知识铺垫,其实本来也是该包含在初阶内容之中滴。
arr与&arr的区别

定义类比:

这里既然知道了数组指针的概念,就做一道小练习:
问:p的类型应该怎么写?

#include int main(){	int* arr[10] = { 0 };	//p = &arr;	//问:p的类型应该怎么写?	return 0;}

解析:

数组指针的使用

数组指针用对还是蛮好用的,但用错了那是非常别扭。
错误示范:


那数组指针到底是怎样访问到每个元素的呢?
下面就来看数组指针在二维数组中怎样使用:
介绍了数组指针和指针数组的,我们一起来看看下面代码是什么意思:

int arr[5];int *parr1[10];int (*parr2)[10];int (*parr3[10])[5];

解析:

4.数组传参和指针传参

写代码的时候难免要把【数组】或【指针】传给函数,那函数的参数如何设计呢?
4.1 一维数组传参

4.2 二维数组传参

4.3 一级指针传参

反向思考:当 函数参数 部分是一级指针时候,函数能接收什么参数?


4.4 二级指针传参

反向思考:当 函数参数 部分是二级指针时候,函数能接收什么参数?


未完待续@边通书。
剧透:

中篇将介绍:点击直达三文读透指针语法(中篇)@指针的进阶—函数指针+函数指针数组+指向函数指针数组的指针

  • 函数指针
  • 函数指针数组
  • 指向函数指针数组的指针,

下篇将介绍:

回调函数

敬请期待!
同时,鄙人才疏学浅,如果有错误和理解不到位之处,或是建议,衷心希望能得到您的指教。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/118795.html

相关文章

  • 三文读透指针语法【中篇】@指针进阶---函数指针+函数指针数组+指向函数指针数组指针

    摘要:三文读透指针上篇本文将继续介绍有关函数指针的相关内容。在大型工程里,函数指针应用还是挺普遍的。首先看阅读下面两段有趣的代码出自语言陷阱与缺陷看看他们是什么意思代码代码函数指针数组函数指针数组,即存放函数指针的数组。 ...

    blastz 评论0 收藏0
  • C语言进阶指针进阶

    摘要:本章节在此基础上,对语言阶段指针进行更深层次的研究。数组指针的类型由数组类型决定,先找出数组的类型去掉名就是类型。相当于数组指针所指向数组的数组名。数组指针指向整个数组,将其看作二维数组并解引用得到一行的首元素,从而遍历访问。 ...

    浠ラ箍 评论0 收藏0
  • 深入理解C语言指针——挑战C指针笔试题 (和bug郭一起学C系列)

    摘要:所以是数组指针,而是指针数组。因为对一个二维数组,可以不知道有多少行,但是必须知道一行多少元素。当二维数组数组名传参,形参接收时,数组的行可以省略,列不能省略,如果省略了列,我们就无法知道当指针加减跳过几个字节。 ...

    miracledan 评论0 收藏0
  • 指针学习进阶

    摘要:让我们来看一下代码,首先我们还是冒泡排序一样,进行了两次循环,第一次代表排序趟数,第二次代表每趟的排序次数。这块的详细介绍在本篇文章稍前的冒泡排序中也有详细介绍。 ...

    oysun 评论0 收藏0
  • C语言进阶指针进阶

    摘要:故使用无具体类型,又称通用类型,即可以接收任意类型的指针,但是无法进行指针运算解引用,整数等。求指针所占字节而不是解引用访问权限大小。数组就是整个数组的大小,数组元素则是数组元素的大小,指针大小都为。 ...

    ingood 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<