指针(1)

简介: 指针(1)

指针基本概念:

1.指针变量是一个变量,用来存放地址,地址唯一标识一块地址空间。

2.指针的大小固定是4/8个字节(32位平台/64位平台)。

3.指针有类型,指针的类型决定+-整数的步长,以及解引用时的权限。

字符指针:
image.png
如图,这是最简单的例子,我们利用指针p指向ch的地址,打印时,解引用p就能打印字符g啦。

image.png
如果使p指向常量字符串,打印时只打印了a这是为什么呢?其实,当我们用指针指向常量字符串时,指向的是首字符的地址,即a的地址。如果我们想打印字符串,直接用%s即可。
image.png
如上图是一种比较特殊的写法,我们可以把它当成数组,通过[]来选取某个字符。

不过需要注意的是,我们不能通过指针p来改变常量字符串的内容,否则就会出现下面的情况
image.png
image.png
分析:str1和str2是两个数组,数组的操作方式是将右边常量字符串的内容拷贝进来,所以他们是两个空间,只是内容相同,所以str1 != str2。而str3和str4是两个指针,编译器在处理的时候,会将相同的常量字符串做成同一个地址,所以,str3和str4指向的是同一个常量字符串,所以str3 == str4。如果在str3和str4前面都加上&,这时,他们表示的是各自的地址,就不一样了。如下图。
image.png
指针数组

指针数组是数组,是用来存放指针的数组。
image.png
上面是用指针数组模拟一个二维数组,因为arr里的元素都是指针,所以arr的类型是int*。

数组指针

数组指针就是指向数组的指针。
image.png
如上图,表示的是指针p指向有10个元素且元素都是整形的数组,注意*p左右两边的括号不能省略,否则就会变成指针数组了。注意:方括号里的大小不能省略,如果省略了,系统会默认是0。
image.png
image.png
例子:
image.png
分析:二维数组传参,形参部分可以写成指针。数组名是数组首元素的地址,我们可以把二维数组看成两个一维数组,此时p指向arr第一行的起始地址。

函数指针
image.png
可以看出,&函数名就是函数的地址,函数名也是函数的地址。

image.png
如上图,如果我们想用p指向add函数,可以先写出(*p),注意括号不能省略,接着查看add形参的类型和返回值的类型,按上图所示即可写出。(add前面的&可有可无)。
如果我们想调用,只需解引用然后给上实参即可。
image.png

目录
相关文章
指针的部分应用
指针的部分应用
47 0
|
1月前
指针初步讲解(上)
指针初步讲解(上)
31 1
|
3月前
|
存储 C语言
一篇文章带你深入了解“指针”(上)
一篇文章带你深入了解“指针”(上)
|
6月前
|
C++ 编译器
|
6月前
|
存储 C语言 C++
指针是什么
指针是什么
39 0
|
6月前
|
存储 C++
19指针
19指针
30 0
|
6月前
指针(3)
指针(3)
25 0
|
人工智能 程序员 C语言
C 中的指针
C 中的指针
|
存储 安全 C语言
C语言知识点之 指针1
C语言知识点之 指针1
61 0
|
人工智能
指针-田忌赛马
指针-田忌赛马