int * (*ptr)()
来源:互联网 发布:心知早早孕试纸准确吗 编辑:程序博客网 时间:2024/06/06 03:14
2008-12-09 20:23
先声明写成这样int(*ptr)*()是错误的,遇见这样的问题,不用怕一步一步分析就出来了:1.在上面的表达式中从左到右有四个运算符()、*、*、()2.运算符的优先级()比*高,()的结合方向是自左到右,*的结合方向是自右到左3.对于上面的表达式是先运算(*ptr),这是定义了一个指针变量ptr,指向什么类型呢?看下面4.下来再运算下一个小括号(),是一个函数5.接下来运算*(),对于这样的运算C编译器是无法解释的,所以int(*ptr)*()是错的。但是,写成int * (*ptr)()这样,这个表达式就是正确的,看分析1.和上面一样同样是四个运算符,但是放置顺序不一样,从左到右是*、()、*、()2.由于小括号的运算级比较高,结合方法又是自左向右,所以先运算(*ptr),表明定义了一个指针ptr3.接下来再运算最右边的小括号(),表明是一个函数4.接下平再运算* (*ptr)(),表明函数的返回值是一个指针5.那么int * (*ptr)()表明定义了一个指针变量ptr,它指向一个没有参数,并且返回值是一个整型指针的函数。
0 0
- int * (*ptr)()
- const int *ptr
- int *ptr=(int*)(&a+1);
- int *(*pt)[10] 和 int **ptr[10]
- int *ptr=(int *)(&a+1)
- int *ptr=(int *)(&a+1)
- int *ptr=(int *)(&a+1)
- int *ptr=(int *)(&a+1)
- int *ptr=(int *)(&a+1)
- int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr));
- C语言拾遗:常量指针与指针常量(const int *ptr, int const *ptr, int * const ptr, const int * const ptr区别)
- int中断实现jmp near ptr功能
- int const *ptr(常量指针)和int * const ptr(指针常量)
- int *ptr=(int *)(&a+1)问题的探讨
- int *ptr=(int *)(&a+1)问题的探讨
- 关于int *ptr=(int *)(&a+1)问题的探讨
- int *ptr=(int *)(&a+1)(面试题)
- 高通笔试题int *ptr=(int *)(&a+1)
- VB.net学习笔记之聊天工具Client端:System.Net.Sockets
- linux中使用定时器
- 1线程概念:线程和进程之间的关系,线程间可共享资源,线程间非共享资源,线程的优缺点
- 解释器模式
- WebLogic如何设置session超时时间
- int * (*ptr)()
- mysql去除重复
- 正确地保存编译内核产生的.config文件-使用make savedefconfig
- 初学Redis(1)——认识Redis
- 当你在浏览器地址栏输入一个URL后回车,将会发生的事情
- 规格模式
- 设计模式--缺省适配模式
- 反转单向链表
- 生·殖整形技术:韩式DGD包·皮环切术