社区
C语言
帖子详情
C语言中为什么要设计指针?
c_language
2006-04-20 08:53:44
如何客观评价指针的利弊。在程序语言中,指针是不是必须的?
还有一个问题:
程序语句的三种结构很好理解,显然它和“逻辑学”应该有一定的关系。那么函数呢?它的理论基础是什么?也就是为什么在程序设计语言中要引入“函数”。
类似的还有“宏定义”、“结构体”。它们各自的依据是什么,不可能是“无缘无故”的吧!
...全文
389
21
打赏
收藏
C语言中为什么要设计指针?
如何客观评价指针的利弊。在程序语言中,指针是不是必须的? 还有一个问题: 程序语句的三种结构很好理解,显然它和“逻辑学”应该有一定的关系。那么函数呢?它的理论基础是什么?也就是为什么在程序设计语言中要引入“函数”。 类似的还有“宏定义”、“结构体”。它们各自的依据是什么,不可能是“无缘无故”的吧!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
寻开心
2006-04-21
打赏
举报
回复
孔乙己还问那个回字有多少种写法呢
指针是c语言的最有特色的东西
是不是没有它就解决不了了某个具体的问题呢,不是的
只是有了它有了更多的可能性
zez
2006-04-21
打赏
举报
回复
楼主是学哲学的..
这年头,哲学家也来编程???
用的着钻牛角尖么??
计算机刚出来的时候没有函数,都是 用手打开关闭开关,后来用打孔的纸带.
后来有了汇编..
再后来才有了高级的语言..
再后来出来了c,出现了结构体,函数. 为什么有这些,因为这样方便,省事!!
LoveCreatesBeauty
2006-04-21
打赏
举报
回复
以前不是有位朋友提到过(当然在很多书本里也有),malloc系列函数分配的对象没有名字,必须用指针才能引用。用来回答这个问题,是不是有启发性?C是一个静态类型语言,通过malloc希勒函数可以获得一定在运行时的弹性,没有指针则不能获得这种动态性,或者即使获得也不能使用它。
TryBoYang
2006-04-21
打赏
举报
回复
看什么样的需要了。
在系统软件和嵌入式开发这样需要高效运行效率的领域,操作指针比其他的方法快很多。
面向对象语言的指针只是对程序员屏蔽掉而已,其语言内部还是有大量指针。
爱我的人请呼吸
2006-04-21
打赏
举报
回复
jixingzhong(瞌睡虫:选择了远方,只顾风雨兼程!) ( ) 信誉:102 2006-04-20 21:06:00 得分: 0
呵呵,
楼主可能有些过于狭隘了~
在 java 中没有指针,
也没有函数,
有的只是 类,方法 ....
————————————————————————————
在Java语言中虽然没有明确的指针定义,实质上每一个new语句返回的都是一个指针的引用
武稀松
2006-04-21
打赏
举报
回复
指针的历史非常悠久了,从Pascal开始就引入了指针的概念.
指针固然可能带来危险.但是指针直接访问内存却是设计底层和操作系统的必须.
所以高级语言设计操作系统只有两大据有指针的族系PASCAL(包含MODULE,ADA)和C(包含C,C++).
Pascal可以说是开创了现代高级语言的先河.它发扬光大了结构话设计,函数式语言.并且它引入的CASE语句、记录和指针等新概念一直使用到今天.Pascal之父的话"数据+算法=程序"也是现代设计开发的经典语言.
C在继承了Pascal有用的元素以后去掉了Pascal的呆板(也去掉了严谨和优雅的自然语言语法).
到今天几乎ALGOL家族统一了全部的开发语言.(C,Pascal是它的最大的两个后代).
语法都是一脉相承的.都是有用的.
c_language
2006-04-21
打赏
举报
回复
我只所以有这些问题,是想弄清楚技术背后的思想,因为我觉得只有弄清楚最本质的东西,才能以不变应万变.不管什么技术,它背后总有理论思想和原理.
为什么计算机要用CPU?
把我所知,这好象与冯诺依曼所提出的程序存储原理有关.
为什么我们买的电脑需要一个机箱?
这还用问吗?肯定是为了保护内部的元器件,同时还可以起到防止辐射的作用,加一个机箱还可以使计算机更美观,何乐而不为呢?
我有这样一个观点,不知对不对?
每一件事物的出现和引入都会有它的原因,不会无缘无故的出现.
lengsehuoyan
2006-04-21
打赏
举报
回复
管理内存
september_29
2006-04-21
打赏
举报
回复
为什么计算机要用CPU为什么,我们买的电脑需要一个机箱?
为什么??
swabc
2006-04-21
打赏
举报
回复
不讨论这么无聊的问题
Piboye
2006-04-21
打赏
举报
回复
指针其实是不能避免的问题,以我看到的语言来说,每种语言都有指针。
从汇编,C,C++到pascal,VB,Delphi,C#,Java,perl....
好多语言自称是没有指针,其实是换汤不换药,一样都有指针。
好多语言用句柄来代替C中的指针,可是你想想那不还是指针吗?
C中指针很多人都认为是指向内存地址的,其实在现代的计算机系统中,这些指针在大多数情况下也就是个程序逻辑地址,它要经过段变换和页变换才能找到真正的物理地址。
这些过程也涉及到查表,这和前面的句柄不是一样了吗。
C语言中指针之所以搂来非议,你因为C,C++中的指针都是row的,太原始了,限制太少,没有智能。
其它语言只是多加了指针的限制和智能化一点,后就改名了。
C++语言可以做的很好在指针的封装中。
所以说不是指针不好,而是要把指针用到位,该row就row,该smart就smart
adintr
2006-04-21
打赏
举报
回复
计算机为什么要设计内存?
hazuki9902
2006-04-21
打赏
举报
回复
如何客观评价指针的利弊。在程序语言中,指针是不是必须的?
---------------------------------------------------------]
本人愚顿,限于交流,所言可能不详.但是指针确实是C的精髓所在.
程序语言中,指针不是必须的.
用C指针可以直接访问内存单元,提供了最低层,最直接的操作,因此效率自然比其他高级语言优越
也正是由于可以直接访问内存单元的特点,如果程序中指针没有操作好(申请\初始化\偏移量操作\有效性检查),轻则造成运行失败,重至系统崩溃...
wind19
2006-04-21
打赏
举报
回复
指针是一个好东西,可以很方便得解决一些问题,只是比较难,看你的造诣了,其实java中也用到指针的原理的
megaboy
2006-04-21
打赏
举报
回复
如何客观评价指针的利弊。在程序语言中,指针是不是必须的?
------------------------------------------------------
从必要性来说的话,别说指针,即使其它东西也没有什么是必要的。一门语言之所以有这种或那种东西,基本取决于语言发明人是如何想的。
之所以要引入“函数”的概念,其渊源应该是数学思想,与计算机无关。
rickerliang
2006-04-21
打赏
举报
回复
函数是程序设计思维的一次很大的飞跃,其中心思想就是把变化的东西封装起来
逸学堂
2006-04-21
打赏
举报
回复
研究一下CPU的构成,就知道指针的用处了。
BTW:CPU通过地址总线获取地址,在通过数据总线读取数据。
这典型是一个指针调用。所以说语言中没有指针,那么首先先从硬件上
取消指针调用。
jixingzhong
2006-04-20
打赏
举报
回复
楼主可以去了解一些 计算机语言的 发展历程 ...
jixingzhong
2006-04-20
打赏
举报
回复
呵呵,
楼主可能有些过于狭隘了~
在 java 中没有指针,
也没有函数,
有的只是 类,方法 ....
gjianpro
2006-04-20
打赏
举报
回复
和计算机硬件结构有关,没有指针就不叫C语言了
加载更多回复(1)
免费下载:
C语言
难点分析整理.doc
1. C 语言
中
的
指针
和内存泄漏 5 2.
C语言
难点分析整理 10 3.
C语言
难点 18 4. C/C++实现冒泡排序算法 32 5. C++
中
指针
和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C
中
可变参数函数实现 38 8. C程序内存
中
组成部分 41 9. C编程拾粹 42 10.
C语言
中
实现数组的动态增长 44 11.
C语言
中
的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14.
C语言
函数二维数组传递方法 64 15.
C语言
复杂表达式的执行步骤 66 16.
C语言
字符串函数大全 68 17.
C语言
宏定义技巧 89 18.
C语言
实现动态数组 100 19.
C语言
笔试-运算符和表达式 104 20.
C语言
编程准则之稳定篇 107 21.
C语言
编程常见问题分析 108 22.
C语言
编程易犯毛病集合 112 23.
C语言
缺陷与陷阱(笔记) 119 24.
C语言
防止缓冲区溢出方法 126 25.
C语言
高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31. PC-Lint与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C
中
struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数
指针
数组与返回数组
指针
的函数 186 38. 右左法则- 复杂
指针
解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C头文件 202 43. 打造最快的Hash表 207 44.
指针
与数组学习笔记 222 45. 数组不是
指针
224 46. 标准C
中
字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解
C语言
指针
的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空
指针
究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的
指针
288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级
C语言
程序员测试必过的十六道最佳题目+答案详解 297 61.
C语言
常见错误 320 62. 超强的
指针
学习笔记 325 63. 程序员之路──关于代码风格 343 64.
指针
、结构体、联合体的安全规范 346 65. C
指针
讲解 352 66. 关于指向
指针
的
指针
368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:检查 new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序
设计
常用算法源代码 412 83.
C语言
有头结点链表的经典实现 419 84.
C语言
惠通面试题 428 85.
C语言
常用宏定义 450
C语言
实例解析精粹
C语言
初学到精通必备资料
C语言
算法大全
是关于C++语言及其程序
设计
的最重要的著作,是在C++领域
中
地位无法替代的一部杰作。最新版本,也最能反映最新的C++标准。
C语言
经典编程900例
C语言
经典编程900例 经典标准代码 源代码
经典编程900例(
C语言
)
经典编程900例(
C语言
) 从零开始到高级 适合基础
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章