C语言指针个人理解

一提到C语言,很多人第一时间想到的就是指针。究其根本就是指针以复杂著称,本人也是学习完第一遍之后也是和大多数人一样云里雾里,做题时也是一窍不通,后来有又多刷了几遍然后就豁然开朗,做题正确率也是十分的高。所以说学习指针真正诀窍在于学他个三五遍

本人的指针讲解严格意义上来讲根本不算是讲解,只是我个人的一个笔记罢了。

因为指针这个东西偏概念性,所以文字不好叙述,我在这里只会讲指针的大概,主要意图是为了供自己复习使用。

想看指针详细讲解的同学,可以去看这篇大哥的讲解 CSDN大神指针详细讲解,本篇文章适合有基础的同学进行观看。

一、什么是指针?

指针通俗来讲就是地址,指针就是地址,地址就是指针。我们定义了一个变量,系统对变量进行编译的时候就会给这个变量分配内存单元,内存若是一个公寓,那么内存单元就是公寓的一间间屋子,而指针就是公寓的“ 门牌号 ”。
在这里插入图片描述

二、定义指针变量

指针变量 : 含义就是存放变量地址的变量,本质仍然是变量
指针变量格式:

数据类型 *指针变量名  //eg   int  *a;   比普通的变量定义 多一个*,这里的*就是表示该变量为指针变量

注:若数据类型为void类型则表示该指针变量为空类型
指针变脸所占的字节数:

TC系统 VC系统
2字节 4字节

注:指针变量所占字节数和数据类型无关

三、指针变量的赋值

前面我们提到过指针变量保存的是变量的地址而非变量的元素数值,所以我们要把元素的地址给提取出来然后才可以进行下一步的赋值操作,这时候取地址运算符就应该现身了 &

取地址运算符 &
优先级 整数第二
结合性 从右往左
作用 获取变量的地址

用法很简单就是把变量的地址利用取地址运算符获取到然后再赋值给指针变量就可以达到赋值的操作。

举个栗子

int a=6,*p=&a;     //这时就把a的地址赋值给了指针变量p,指针变量p也就指向了元素a

注意!!!
1.&a赋值给的时指针变量p而不是* p, *只是起到定义作用
2.变量的数值类型要和指针的数值类型保持一致
3.若定义了一个指针变量等于NULL,则代表该指针为空指针,NULL的数值为0
4.上面例子的p = &a,输入数据时可等同使用

四、指针变量的引用

访问变量有直接访问间接访问两种

指针运算符/简介访问运算符/取内容运算符 *
优先级 正数第二
结合性 从右往左
作用 获取指针所指向对象的内容

这时候估计就会有很多同学就懵了,这个*一会代表定义指针变量,一会代表取内容运算符,到底算个神魔东西啊,不要慌请看下面表格便一目了然。
Please look at the table below

双目内为乘法 a*b
前有数据类型,后为定义的为指针 *p
定义之外且为单目运算符 取内容运算符

举个栗子

int a=5;
int *p=&a;
peintf("%d\n",*p);   //结果就为5,因为去内容运算符*就是取指针所指向的内容,指针指向a,a的内容为5,所以结果为5

二级指针:

格式:

int **q;

含义就是指向指针的指针,内部保存的就是指针的变量地址

int a=6;
int *q=&a;
int **p=&q;
printf("%d\n"**q);  //**q可以看成*(p)就是取q指针所指向内容,此时q指向q

五、指针和一维数组

重点!!!

一维数组的本质时内存中连续的存储单元,而一维数组的名字就代表一维数组的首地址,知道了首地址我们自然可以推算出其他数组元素的地址。

举个例子
int a[5];

第一种一维数组元素表示方法

a[0] a[1] a[2] a[3] a[4]
a(一维数组名) a+1 a+2 a+3 a+4

第二种一维数组元素表示方法
&[0] &[1] &[2] &[3] &[4]

5.1 位置差

指向同一个数组的两个指针可以做差,其含义是两个元素的元素差
设int *q,*p;

p==q p和q指向同一个位置
p<q p的位置指向在q指向位置的前面
p>q p的位置指向在q指向位置的后面

利用位置差实现数组的逆置

#include <stdio.h>
int main()
{
   
    int a[8]={
   1,2,3,4,5,6,7,8};
    int *p,*q;
    int t,i
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: CSDN C语言经典书籍很多,以下是其中一些值得推荐的书籍: 1. 《C Primer Plus》:该书是C语言的经典入门教材,内容详尽,适合初学者入门学习,由浅入深地介绍了C语言的基础知识和高级特性,有很多实例和练习题供读者练习。 2. 《C和指针》:这本书着重讲解C语言中的指针概念和使用方式,通过对指针理解和运用,能够帮助读者更深入地理解C语言的内存管理和数据结构。 3. 《C编程语言》:这本书是C语言之父Dennis M. Ritchie和Brian W. Kernighan合著的,被誉为C语言的圣经。该书介绍了C语言的语法、基本数据类型、控制结构等,是学习C语言的经典教材。 4. 《C陷阱与缺陷》:该书通过讲解C语言中容易犯错和易被忽视的陷阱和缺陷,帮助读者避免常见的错误,提高代码的质量和可靠性。 虽然以上书籍都是经典,但每个人的学习风格和需求不同,所以还需要根据个人情况来选择合适的书籍。建议读者在选择时,根据自己的基础和学习目标进行权衡,选择最适合自己的一本书,然后通过实践与练习巩固所学知识。 ### 回答2: CSDN上有很多关于C语言的经典书籍推荐,以下是一些具有代表性的书籍: 1.《C Primer Plus》:由Stephen Prata撰写,是一本深入浅出地介绍C语言的入门书籍。它从基础知识开始,循序渐进地讲解C语言的各个方面,适合初学者学习。 2.《C和指针》:由Kenneth A. Reek编写,重点讲解C语言指针的使用。指针是C语言的重要特性,通过这本书可以系统地学习和理解指针的概念、用法和相关技巧。 3.《C程序设计语言》:由Brian W. Kernighan和Dennis M. Ritchie合著,被誉为C语言的经典之作。这本书通俗易懂,介绍了C语言的语法和基本特性,并通过大量实例帮助读者掌握C语言编程。 4.《C专家编程》:由Peter van der Linden编写,讲解了一些高级的C编程技巧和经验。这本书适合已经对C语言有一定了解的程序员进一步提升自己的编程能力。 5.《C陷阱与缺陷》:由Andrew Koenig和David R. Hanson合著,以教你如何避免在C语言编程中的一些常见陷阱和错误为目的。尤其适合有一些C语言编程经验的人阅读。 这些书籍都在C语言学习和应用中具有一定的影响力,建议大家根据自己的需求和编程水平选择适合自己的书籍进行学习。 ### 回答3: CSDN是中国最大的IT技术社区之一,作为一个程序员,学习编程语言是非常重要的。在学习C语言方面,CSDN上有许多经典的书籍推荐。 首先,我想推荐《C Primer Plus》,这是一本非常经典的C语言教材。它以深入浅出、循序渐进的方式介绍C语言的基本语法和常用技巧,适合初学者入门。书中还有大量的实例和习题,有助于读者巩固所学的内容。 其次,还有一本非常流行的C语言书籍是《C语言程序设计》,这本书在C程序设计的方方面面都有详细的介绍,包括基本语法、控制流程、函数、数组和指针等等。此外,书中还介绍了一些常用的C标准库函数的用法,对于C语言的全面学习非常有帮助。 另外,还有一本经典的C语言参考书是《C程序设计语言》,被誉为C语言的圣经。这本书由C语言之父Dennis M. Ritchie和Brian W. Kernighan共同编写,系统性地介绍了C语言的基本语法和特性。它以简洁而清晰的语言描述了C语言的核心概念,是理解C语言底层原理和深入学习C语言的重要参考书。 除了上述的书籍,CSDN上还有很多其他不同级别和内容的C语言书籍推荐,可以根据自己的需求和学习目标选择适合自己的书籍。值得一提的是,书籍只是学习的辅助工具,真正的提升还需要通过大量的实践和项目经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦同学学学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值