Ian11122840 发表于 2011-2-17 17:15:49

据说看懂这道题,就学会指针了......分享给大家看看

指针的使用一直都是初学者的第一道坎儿,绕来绕去的。。。以下这道题,据说琢磨透了,就基本不怕指针了..~~

用变量a给出下面的定义
a) 一个整型数
b)一个指向整型数的指针( A pointer to an integer)
c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r
d)一个有10个整型数的数组( An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

答案是
a) int a; // 一个整型数 An integer
b) int *a; // 一个指向整型数的指针 A pointer to an integer
c) int **a; // 一个指向指针的的指针 A pointer to a pointer to an integer
d) int a; // 一个有10个整型数的数组 An array of 10 integers
e) int *a; // 一个有10个指针的数组 An array of 10 pointers to integers
f) int (*a); // 一个指向有10个整型数数组的指针 A pointer to an array of 10 integers
g) int (*a)(int); // 一个指向函数的指针 A pointer to a function a that takes an integer argument and returns an integer
h) int (*a)(int); // 一个有10个指针的数组,指向一个整形函数并有一个整形参数 An array of 10 pointers to functions that take an integer argument and return an integer

lghtjpu 发表于 2011-2-17 17:26:01

面试的时候被考过好几次了,就是这几题,所以要是找工作的话记下吧,呵呵。

tyqhaha 发表于 2011-2-17 17:42:45

f,g,h 不是很懂

amazing030 发表于 2011-2-17 17:55:45

./emotion/em022.gif有几个不是很明白,但估计没机会用上

ITOP 发表于 2011-2-17 17:59:31

MARK!

xjmlfm1 发表于 2011-2-17 18:00:13

貌似只有最后一个不懂,是不是可以及格了?

Ian11122840 发表于 2011-2-17 20:36:41

其实这是些绕口令 呵呵

morine1 发表于 2011-2-17 20:54:13

mark

librae8226 发表于 2011-2-17 21:23:21

这个很好啊~
"pointers on c" 上面的?

Ian11122840 发表于 2011-2-17 21:52:33

回复【8楼】librae8226
-----------------------------------------------------------------------

是面试的题库,面试官就喜欢拿这些变态的题来考人...

alexmayer 发表于 2011-2-17 21:57:19

绕进去了。

zy473551 发表于 2011-2-17 22:21:51

绕一遍,发现,还可以!

823032003 发表于 2011-2-17 22:37:15

h) int (*a)(int); // 一个有10个指针的数组

中文 翻译的有问题吧

ndust 发表于 2011-2-17 23:37:12

jh

wangxinghua 发表于 2011-2-18 02:09:18

(⊙o⊙)

dreamyou 发表于 2011-2-18 02:19:35

(⊙o⊙)

format 发表于 2011-2-18 08:02:17

感觉还行

比自己在一年前强点

sfq2008 发表于 2011-2-18 08:04:16

C不太熟,学习了

kent 发表于 2011-2-18 08:39:02

对于单片机开发,这些指针大部分不常用,我认为不是必需的。我一般是通过数组的方法代用。
但作为专业软件开发,还是有必要掌握。如大屏幕液晶显示,数据量非常大,用高级指针对数据引用,程序可以做得最简捷。对程序开发者来讲,指针是个非常好的变量。
我认为,要不要使用指针变量,其效果取决于程序数据量的大小。

final9 发表于 2011-2-18 09:15:59

回复【18楼】kent
-----------------------------------------------------------------------

感觉除了最后一个不太常用,前面的还是很常用的,这个题不变态啊,是基本的题!

ssclark 发表于 2011-2-18 10:11:34

MARK

steven 发表于 2011-2-18 10:20:10

感觉同19楼。

downtoearth 发表于 2011-2-18 10:44:11

看了

strongtang 发表于 2011-2-18 11:10:48

MARK

jamiedu 发表于 2011-2-18 11:45:57

感觉同19楼。

zylaputa 发表于 2011-2-18 12:19:34

mark 指针

canyi 发表于 2011-2-18 13:17:13

mark

nsy7758258 发表于 2011-2-18 13:22:18

mark

zhanglu1990 发表于 2011-2-18 13:33:08

看起来似懂非懂····

lsw0136 发表于 2011-2-18 14:13:16

jh

Little_White 发表于 2011-2-19 16:20:40

mark

wenwu 发表于 2011-2-19 16:23:45

嗯,确实不错。几个题很有意思。

wgain 发表于 2011-2-19 18:59:21

这个是基础题了,关键是要做到会用才是王道.

ERDTxiduoduo 发表于 2011-2-20 11:23:03

对指针不熟悉

mcudesign 发表于 2011-2-20 16:12:46

这里看懂了还要看懂了它编译后的汇编是怎么实现的才算看懂了、

mcudesign 发表于 2011-2-20 16:16:17

估计最后一个很多人都没遇到过、

chen8139 发表于 2011-2-20 22:13:59

回复【楼主位】Ian11122840 船儿舟
-----------------------------------------------------------------------

mark!

JUNGO 发表于 2011-2-21 09:46:35

学习了

first_blood 发表于 2011-2-21 10:06:35

从来不记,用的时候查,所以我当初面试没过

ylei12 发表于 2011-2-21 10:41:08

mark

STM32W108 发表于 2011-2-21 20:33:16

b) int *a;相当于int (*a);
括号内含义:a是指针
括号外含义:指针指向类型是int

c) int **a; 相当于:int *(*a);
括号内含义:a是指针
括号外含义:指针指向类型是int *
   
e) int *a; 相当于:int (*a);
括号内含义:a是指针数组
括号外含义:指针指向类型是int

f) int (*a);
括号内含义:a是指针
括号外含义:指针指向类型是int

g) int (*a)(int);
括号内含义:a是指针数
括号外含义:指针指向类型是int()(),//没有参数,返回int的函数

h) int (*a)(int);
括号内含义:a是指针数数组
括号外含义:指针指向类型是int()(),//没有参数,返回int的函数

bobqq 发表于 2011-2-21 21:05:32

mark

cu_ice 发表于 2011-2-21 21:22:50

mark指针

hemjidn 发表于 2011-2-21 21:31:56

40楼g和h应该是int参数吧返回也是int

summerstar 发表于 2011-4-30 23:41:33

mark

czw90130 发表于 2011-5-1 00:29:51

mark

akix 发表于 2011-5-1 02:16:18

兄弟这几个指针应用算是最基础的了还没给你出++*p呢。 哈哈

core_duo 发表于 2011-5-1 09:37:58

mark 指针

core_duo 发表于 2011-5-1 09:40:10

mark 指针

muzheyun 发表于 2011-5-1 15:53:36

mark

qqcanread 发表于 2011-5-1 16:36:47

学习了

solyp 发表于 2011-5-1 17:02:21

jilu,回头细看

zgxcom123 发表于 2011-5-1 17:10:32

f和 h不懂
学习了!~~~~

sunjian0000000 发表于 2011-5-1 18:23:21

mark 指针

pang123hui 发表于 2011-5-1 21:22:53

我全会哦

xujianglun 发表于 2011-5-2 13:28:25

貌似看过了。。。。

zyqcome 发表于 2011-5-2 13:43:37

认真的mark

mcu131368 发表于 2011-5-2 14:20:39

我就会前两个

daticy 发表于 2011-5-2 20:56:28

看起来似懂非懂····

huang19015 发表于 2011-5-3 20:37:21

mark   好久都没用过指针了

cainiao222 发表于 2011-5-4 13:41:32

看下<< C语言深度剖析>> ,都有讲到的,很不错的一本书!

hf5542 发表于 2011-5-5 18:08:56

mark

cuikai12345 发表于 2011-5-5 18:16:22

mark

shenzhenlang 发表于 2011-5-5 19:19:31

不错

jerkoh 发表于 2011-5-5 19:38:55

mark

wanglituan 发表于 2011-5-6 23:23:33

该好好学习指针了

lhjin 发表于 2011-6-4 23:55:08

长见识了

lantian0099 发表于 2011-6-5 01:48:37

最后一个似懂非懂...

yxeglxl 发表于 2011-6-7 09:56:26

lovewwy 发表于 2011-6-7 10:00:27

mark .

yibunihao 发表于 2011-6-7 11:41:24

f,h不懂,回家看书去

yusufu 发表于 2011-6-7 12:29:59

mark留着学习

ouyj_0210 发表于 2011-6-7 17:07:50

留着了

guohua0710 发表于 2011-6-7 17:42:36

感谢分享!

zy473551 发表于 2011-6-7 21:23:20

看懂了

qhshilin 发表于 2011-6-7 21:34:57

g) int (*a)(int variables);
h) int (*a)(int variables);
工作了做的是最下层的工作可是一直在自学C,所以以上的题目感觉很是简单!

lanjingjing 发表于 2011-6-7 22:40:03

haohaojio

luck851 发表于 2011-6-7 23:19:20

MARK 指针

283868130 发表于 2011-6-8 00:01:24

学习了

liu1337 发表于 2011-6-8 10:15:33

呵呵,大概看了一下,主要是要找清楚指针到底指向谁,有点像绕口令呵呵

oaixuw 发表于 2011-6-8 10:44:39

不错

yanshengdian 发表于 2011-6-8 17:22:45

先回帖, 再看

yanshengdian 发表于 2011-6-8 17:28:47

看过了, 再来盖楼

ansai0089 发表于 2011-6-8 17:31:10

呵呵

jack_yu 发表于 2011-6-8 17:44:29

有些懂有些则不明白。学习了!

myqq286477745 发表于 2011-6-10 10:24:22

make

skystalker 发表于 2011-6-10 16:53:48

《C语言程序设计》P255 表10.2

yanshengdian 发表于 2011-6-14 10:24:19

再来看看...

914775866 发表于 2011-6-15 21:43:32

不错,有几个还不太明白

supercxx 发表于 2011-6-15 23:17:35

相信很多人对(int *a)( int ) 中 a 指针的定义感到困惑,我初看此题也想了很久,其实该指针的定义跟 int *a本质上是相同的,我认为编译器在语法处理上是一致的,只是前者数组指针存储的内容为函数入口地址,后者数组指针存储的内容为整型数据。对前者举例如下:

int myfun( int me )
{
   return me;
}

//函数指针数组类型定义
typedef(int *fun)(int);

定义 函数指针数组变量:fun   ptrFun;
对指针数组变量赋值:   ptrFun = myfun;
通过变量间接调用函数:(*ptrFun)( 168 );

19001579 发表于 2011-6-15 23:30:51

最后两个 int (*a)(int);   int (*a)(int)
在小内存的情况下用起来很不爽。特别是函数重入的时候。
这两个在有操作系统的情况下用得比较多。

aheadlead 发表于 2011-6-16 21:06:58

初中同学发来贺电

jeffernpeng 发表于 2011-6-21 18:33:46

mark

qiuyan 发表于 2011-6-21 19:02:09

好几种从来没用过

caijinshu 发表于 2011-6-21 23:38:54

mark

yulongkui 发表于 2011-6-22 00:17:29

记下

myqiang1990 发表于 2011-6-22 00:50:27

不会吧....俺全会呀.../emotion/em011.gif ..看来《C语言专家编程》确实是一本很了不起的书!!

banyai 发表于 2011-6-22 08:24:46

知道了,不知道怎么用也白搭,比如f这种指针怎么赋值,怎么操作,++之后指向哪里?

xiaosars 发表于 2011-6-22 09:38:43

mark

javine 发表于 2011-6-22 09:45:56

mark住,常看看...
页: [1] 2
查看完整版本: 据说看懂这道题,就学会指针了......分享给大家看看