问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中指针很难学吗

发布网友 发布时间:2022-04-30 03:33

我来回答

5个回答

热心网友 时间:2023-10-09 19:16

一般人觉得指针难学因为在学指针前还没把表达式和变量的概念搞清楚。
1. 指针变量保存的是内存地址。用指针访问数据也称为间接寻址。类似于你找一个人,他住在“第一大院”。你直接去找第一大院就是直接寻址。如果他的住址只有一个住在“第五大院”的人知道,你去第五大院问出他家在第一大院这就是间接寻址。
1.+ 对于上面这种情况,如果我们认为第五大院是“知道他家住址的那个人的住址”,我们就可以进行一连串的间接寻址。另一方面也说明指针变量保存的地址也是数据的一种。
2. 指针变量的类型。指针变量的类型目的*仅仅*在于减少编程中可能发生的错误。这一点必须明确。根本上说指针变量的类型就是地址。我们为了避免不必要的错误强行加上了“只能保存整数的地址”之类的约束。好比住在第五大院的人只会去记中年人的地址。
3. 指针的操作。
3.0 声明:类型A的指针的类型写作 类型A* 比如int*。与此同时int*本身也是类型,我们可以写int**。就是int的指针的指针。
3.1 获取地址,对于内存变量表达式 &运算符可以获得其地址,类型是表达是类型的指针。比如对于变量int a。&a获得的就是类型是int *的a的地址。
3.2 重定向,对于指针变量或者指针变量表达式。*运算符可以获得其指向地址的变量,类型是原指针的上一级。对于int a; int* p = &a; *p等价于a,类型是int。因为*p是变量,我们可以进行x = *p(取值)和*p = 0(赋值)操作。
3.3 &和*都可以对变量表达式进行操作。比如数组int a[10]。我们可以通过&a[5]获得a第5个元素的地址。又如int** a。*a是一个int*类型的变量,我们可以进一步地**a获得类型是int的变量,这就是从第六大院的人口中问出知道A君住址的人在第五大院,然后再去第五大院问出A君住在第一大院的过程。
4. 数组和指针的混合。这个可以说是C/C++语法的bug...
int* a[4] 这个类型可以看成(int*)[4] 元素是int*类型,有4个元素
int (*a)[4] 这个其实是(int[4])* 指向int[4]类型变量的指针。
4.+ 数组变量其实也是指针。int b[4]; 变量b在多数情况下就是一个const int*,指向数组b所占用的内存,也就是数组b的第一个元素。*b和b[0]是等价的。对于int *a;我们可以直接进行a = b的操作,让指向数组b。
5. 指针的加法。对于int *a;我们可以进行a + N, a - N的运算。a + 1指向a指向的元素的下一个元素,相应的a - 1指向上一个元素,以此类推。于是*(a + 1)就对a指向的下一个元素进行重定向,等价于数组运算a[1]。
5.+ 对于int *a, *b; a - b获得的是b到a之间相差多少个元素,类型是int。比如 int x[5]; int *a = &x[0], *b = &x[3]; b - a的结果是3。相应的a - b的结果是-3
这些大体概括了指针的基本内容,可能有疏漏,指针的应用就是指针的基本操作和其他表达式、变量操作的配合。

热心网友 时间:2023-10-09 19:16

指针是c语言的精华。在c++中指针也很常用,只是更多的使用引用,但引用实质上传递的也是指针。

指针很灵活,所以刚开始学习时会有些难度。怎么办?一句话多写多上机调试写好的程序。谭浩强<<c程序设计>>一书上指针一章讲的非常好,这一章应该精读。
指针实例:(冒险岛乐乐指针问题集)
http://zhidao.baidu.com/question/79838545.html
http://zhidao.baidu.com/question/79567174.html
http://zhidao.baidu.com/question/88454662.html

去网上下载下面这个pdf电子书,这个总结非常详细,然后反复看:
C_C++指针经验总结

热心网友 时间:2023-10-09 19:17

这里介绍c语言的初级运用http://hi.baidu.com/zhayuewan/blog/item/298a10d91a00f6ee39012f3b.html
这里介绍高级用法
http://www.javaeye.com/wiki/topic/416199

就我看来指针其实不是很难的,关键你要彻底理解指针的涵义,理解透彻之后,你再看那些指针用法,你就会发现指针相当好用的。

热心网友 时间:2023-10-09 19:17

不会比其他的部分更难学, 只是用的时候更容易出错而已

热心网友 时间:2023-10-09 19:18

指针开始有点难理解,把它像概念一样背下来就好了,时间长了就好了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 烤鸡翅的做法是什么? c语言学习方法,指针怎么学?非常难吗? 我国最新退休政策 西红柿的小故事? 西红柿的故事是什么 宁夏退休年龄最新规定 C语言指针的用法是什么? 西红柿的故事 c语言指针该怎么学? 碳烤鸡翅的制作方法及步骤 怎么样学好C语言的指针呢? 退休要满足什么条件 C语言的指针怎么学啊 烤箱烤鸡翅的制作方法及步骤 关于C语言中的指针学习 我国退休年龄的规定 关于C语言指针问题学习,怎么学好C语言的指针 退休年龄标准 小米行车记录仪在哪儿买 如何学好c语言指针? 谁知道第一次吃西红柿的故事 企业退休职工抚恤金2021年最新标准 C语言的指针有没有什么比较好的学习方法? 西红柿 故事 C语言初学指针问题? 讲下关于番茄的故事``? 番茄的故事写话100个字 为什么西红柿又叫毛秀才?有什么故事吗? 蕃茄被发现的小故事? 西红柿的爱情故事谁知道? 小时候爱吃西红柿长大以后了不喜欢了,这个故事是什么含义? 蓝牙音量怎么调整 小时候爱吃西红柿长大以后了不喜欢了,这个故事是什么含义 华为手环B2使用蓝牙耳机听音乐时声音小,怎么调大? 关于番茄炒蛋的历史故事 长沙大医院有哪些? 长沙有哪些三甲医院? 湖南长沙有什么医院 长沙有几家大医院 ubuntu环境下怎么备份?