【C语言】深入理解指针(三)(上)

本篇博客将讲解以下知识:

1、字符指针变量

2、数组指针变量

1、字符指针变量

在指针的类型中,有一种指针类型为字符指针:char*

一般使用:

注意:%s打印字符串的时候,需要提供字符串首元素的起始地址。

易错题:

这里str3和str4指向的是同一个常量字符串 。c/c++会把常量字符串存储到单独的一个内存区域。当几个指针变量指向同一个常量字符串的时候,它们实际上会只想同一块内存。但是用相同的常量字符串去初始化不同的数组的时候会开辟出不同的内存块,所以str1和str2不同,str3和str4相同。

2、数组指针变量

(1)数组指针变量是什么?

之前我们学习了指针数组,指针数组是一种数组,数组中存放的是地址。

数组指针变量是指针变量?还是数组?
是指针变量

指针数组:是数组,是存放指针的数组。

字符指针:char* ,指向字符的指针。

整型指针:int*,指向整型的指针。

类比思维:

数组指针:指向数组的指针。

比如:

#include<stdio.h>

int main()

{

int a = 10;

int* pa = &a;//pa是整型指针

char ch = 'w';

char* pc = &ch;//pc是字符指针

return 0;

}

整型指针变量:int* print;存放的是整型变量的地址,能够指向整型类型的指针。

数组指针变量:存放的应该是数组的地址,能够指向数组的指针变量。

int* p110;//p1是指针数组--存放指针的数组。

int(*p2)10;//p2是数组指针。

数组指针

**例如:**int(*p)10;

解释:p先和*结合,说明p是一个指针变量,然后指针变量指向的是一个元素个数为10的整型数组,所以p是一个指针,指向一个数组,叫数组指针。

这里要注意: 的优先级要高于*的。所以必须加上()来保证p先和*结合。

(2)数组指针变量如何初始化

数组指针变量是用来存放数组地址的,如何获得数组地址呢?

例如:

#include<stdio.h>

int main()

{

int arr10 = { 0 };

//&arr得到的就是数组的地址

//如果存放数组的地址,就得存放在数组指针变量中。

int (*p)10 = &arr;//p的类型是int (*)10,数组指针类型。

return 0;

}

数组指针类型解析:

数组指针的可以应用到二维数组传参中去。

相关推荐
余额瞒着我当琳1 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
坐吃山猪1 小时前
WebClient内存配置解析
开发语言·springboot·webflux
jdksjw2 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Zach_菠萝侠2 小时前
【DeepSeek Harness 研究】进化方向4:安全加固 思考、设计与实现
开发语言·安全·deepseek
SL-staff2 小时前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术
SomeB1oody3 小时前
【RustyML入门】6.0. 数学工具
开发语言·后端·机器学习·rust·教程
进制树4 小时前
【飞控开发实战·⑲】ROS2无人机开发环境搭建:Jazzy安装、工作空间与hello_drone节点实战
开发语言·安全·无人机·课程设计
牛马也想出海4 小时前
亚马逊爬虫代理IP:IP类型选择与配置指南
开发语言·php
菜冻鱼4 小时前
Python-pytorch-高级技巧
开发语言·人工智能·pytorch·python·深度学习·神经网络·聚类
lpfasd1234 小时前
python webview打包版卡死、开发版正常
开发语言·python