《C游记》 第柒章 - 指针进阶内功锻 功成行满见真如(壹)

简介: 《C游记》 第柒章 - 指针进阶内功锻 功成行满见真如(壹)

100.gif

目录

(壹) 字符指针

🌈  1.1 基础知识

🌈  1.2 面试题

(贰) 数组指针

🌈  2.1 数组指针的定义

🌈  2.2 &数组名 VS 数组名

🌈  2.3  数组指针的使用


✅《C游记》 专栏 ✅  《小玄的C游之旅》


(壹) 字符指针

🌈  1.1 基础知识

在指针的类型中我们知道有一种指针类型为字符指针char*;

一般使用:

1.png


还有一种使用方式如下:2.png


代码char* pstr = "hello bit.";

特别容易让同学以为是 把字符串hello bit 放到字符指针pstr里了

但是 本质是把字符串hello bit.首字符的地址放到了pstr中3.png上面代码的意思是把一个  常量字符串  的首字符h的地址存放到指针变量pstr中


🌈  1.2 面试题4.png

这里最终输出的是:

5.png

这里  str3    str4  指向的是一个同一个常量字符串。

C/C++会把常量字符串存储到单独的一个内存区域

当几个指针,指向同一个字符串的时候,他们实际会指向同一块内存

但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。

所以str1和str2不同,str3和str4不同。


(贰) 数组指针

🌈  2.1 数组指针的定义

数组指针是指针?还是数组?

答案是:指针。

我们已经熟悉:

整形指针:int * pint -- 能够指向整形数据的指针。

浮点型指针:float * pf -- 能够指向浮点型数据的指针。

那数组指针应该是:能够指向数组的指针。

下面代码哪个是数组指针?


6.png

解释:7.png


🌈  2.2 &数组名 VS 数组名

对于下面的数组:

8.png

arr    &arr  分别是啥?

我们知道arr是数组名,数组名表示数组首元素的地址。

那&arr数组名到底是啥?


我们来看一段代码:

9.png

运行结果如下:10.png


可见数组名和&数组名打印的地址是一样的。

难道两个是一样的吗?

我们再看一段代码:11.png


12.png根据上面的代码我们发现,其实&arr和arr,虽然值是一样的,但是意义应该不一样的

实际上:&arr表示的是数组的地址,而不是数组首元素的地址。

(细细体会一下)

数组的地址+1,跳过整个数组的大小,所以&arr+1相对于&arr的差值是40.


🌈  2.3  数组指针的使用

那数组指针是怎么使用的呢?

既然数组指针指向的是数组,那数组指针中存放的应该是数组的地址。

看代码:21.png


一个数组指针的使用:22.png


23.png


24.png


🌈  2.4  小结

学了指针数组和数组指针我们来一起回顾并看看下面代码的意思:25.png


26.png


105.gif106.gif

目录
相关文章
|
6月前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
6月前
|
C语言
指针进阶(回调函数)(C语言)
指针进阶(回调函数)(C语言)
|
6月前
|
存储 C语言 C++
指针进阶(函数指针)(C语言)
指针进阶(函数指针)(C语言)
|
6月前
|
编译器 C语言
指针进阶(数组指针 )(C语言)
指针进阶(数组指针 )(C语言)
|
6月前
|
搜索推荐
指针进阶(2)
指针进阶(2)
53 4
|
6月前
指针进阶(3)
指针进阶(3)
46 1
|
6月前
|
C++
指针进阶(1)
指针进阶(1)
47 1
|
6月前
|
存储 安全 编译器
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
52 2
|
6月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
53 0
|
6月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
48 0
下一篇
DataWorks