int *p;
*修饰p,P是个指针。
int 修饰(*p),说明P指向的数据类型是int,P的值是int数据的地址。(这也是我举上面的例子的初衷)
而不是int *修饰p.
int (*p)();
*修饰p,P是个指针。
int ()修饰(*p),说明P指向一个返回值是int,无参数的函数。P的值就是该函数的入口地址。
所以,如果函数指针是无类型的话,那么,什么指针又是有类型的?
[此贴子已经被作者于2006-7-14 16:28:09编辑过]
----------------解决方案--------------------------------------------------------
上面的话有些勉强,只是想与你的论点形成一个鲜明的对比,不一定正确
----------------解决方案--------------------------------------------------------
TO BAIDU 大斑竹:
你的 有关 int (*p) 例 是不是 用来 用归谬法 来驳斥我的有关 int (*p)()<指向函数的指针>?
我理解,应该是这个意图吧?
但是,你的这个例证,应该是一种偷换概念吧?
因为,这里 int (*p) 只是其形,实质却是 int *p (编译器所最终解释为的)
所以,应该归谬无效啦。。
《测试了几遍了》
比如TC类,
你这样是非法的:
char ch[2][3]={'a','b','c','d','e','f'};
char *p=ch; //会警告
规范的是:char *p=ch[0];
这里,想再重复一下我的帖子的主题:
没有类型的指针可能是指向函数的指针:
int (*p)() // 这里 穆扬说应该是 int (*p)(char 等等)。这个应该都是可以的,正如在申明函数时
既可 int func(int) 也可 int func(int a) .
P前面的*号,是他唯一的标记,前面的 INT 当然不是指针的而是其指向的函数的返回类型。
如有看法意见,当然提出来一起互相讨论学习,尽力追求到接近真实的道理吧。。
TO 穆扬:
你的对VOID *的意见使我纠正了对VOID *的有些部分的仓促的观点
问题,经过互相讨论甚至论辩,才有提高的。。。
----------------解决方案--------------------------------------------------------