【C语言进阶(五)】指针进阶详解(上)(一)

简介: 【C语言进阶(五)】指针进阶详解(上)

💓博主CSDN主页:杭电码农-NEO💓


⏩专栏分类:C语言学习分享


🚚代码仓库:NEO的学习日记🚚


🌹关注我🫵带你学习更多C语言知识

  🔝🔝


1. 前言

本篇文章将讲解以下几个方面内容:

  • 字符指针
  • 数组指针
  • 指针数组
  • 数组传参和指针传参
  • 函数指针

在这之前先温故一下指针的概念:
点击即可跳转: 指针初阶


2. 字符指针

字符指针就是指向字符型变量地址的变量

比如:

char ch = 'w';
char *pc = &ch;
*pc = 'a';

pc是指向变量ch地址的指针

解引用pc: *pc等价于ch

所以使用 *pc='a’可以修改ch的值


2.1 常量字符串

新内容: 常量字符串

请看以下代码:

char* pstr = "hello NEO-kou";

"hello NEO-kou"被称为常量字符串

众所周知,指针变量的大小是4/8个字节

然而这段字符串有13个字节,所以:
明显这段字符串不存储在这个指针变量中


2.2 常量字符串存储的位置

那么它存储在什么位置?

引出一个新概念: 代码区

我们把内存大致划分为这几个区域:

常量字符串被存储在代码区

而指针pstr指向这个代码区的常量字符串
字符串"hello NEO-kou"的地址就是
第一个字母’h’的地址.
相当于pstr中存放的是字符’h’的地址


3. 数组指针

数组指针可以和其他类型的指针类比:

  • 整型指针:存放整型变量地址的指针变量
  • 字符型指针:存放字符型变量地址的指针

同理得数组指针:

存放数组地址的指针变量

举个例子:

int a[6] = {1,2,3,4,5,6};
int (*p)[6] = &a;//p存放数组a的地址

这段代码可以这样理解:

注意,不能这样写:

int *p[6] = &a;

因为 [ ] 的优先级高于星号 *
不加括号的话p会先和[ ]结合
先与[ ]结合的话,p就不是一个指针了!

相关文章
|
2月前
|
存储 C语言
【C语言篇】深入理解指针3(附转移表源码)
【C语言篇】深入理解指针3(附转移表源码)
42 1
|
2月前
|
C语言
【c语言】指针就该这么学(1)
本文详细介绍了C语言中的指针概念及其基本操作。首先通过生活中的例子解释了指针的概念,即内存地址。接着,文章逐步讲解了指针变量的定义、取地址操作符`&`、解引用操作符`*`、指针变量的大小以及不同类型的指针变量的意义。此外,还介绍了`const`修饰符在指针中的应用,指针的运算(包括指针加减整数、指针相减和指针的大小比较),以及野指针的概念和如何规避野指针。最后,通过具体的代码示例帮助读者更好地理解和掌握指针的使用方法。
52 0
|
12天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
2月前
|
C语言
【c语言】指针就该这么学(3)
本文介绍了C语言中的函数指针、typedef关键字及函数指针数组的概念与应用。首先讲解了函数指针的创建与使用,接着通过typedef简化复杂类型定义,最后探讨了函数指针数组及其在转移表中的应用,通过实例展示了如何利用这些特性实现更简洁高效的代码。
20 2
|
2月前
|
C语言
如何避免 C 语言中的野指针问题?
在C语言中,野指针是指向未知内存地址的指针,可能引发程序崩溃或数据损坏。避免野指针的方法包括:初始化指针为NULL、使用完毕后将指针置为NULL、检查指针是否为空以及合理管理动态分配的内存。
|
2月前
|
C语言
C语言:哪些情况下会出现野指针
C语言中,野指针是指指向未知地址的指针,通常由以下情况产生:1) 指针被声明但未初始化;2) 指针指向的内存已被释放或重新分配;3) 指针指向局部变量,而该变量已超出作用域。使用野指针可能导致程序崩溃或不可预测的行为。
|
2月前
|
存储 C语言
C语言32位或64位平台下指针的大小
在32位平台上,C语言中指针的大小通常为4字节;而在64位平台上,指针的大小通常为8字节。这反映了不同平台对内存地址空间的不同处理方式。
|
2月前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
2月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
2月前
|
C语言
C语言指针(3)
C语言指针(3)
14 1