- 浏览: 308834 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (272)
- java (42)
- c (49)
- 算法 (29)
- 汇编语言 (3)
- 字符集 (3)
- error (3)
- 搜索引擎 (2)
- 互联网 (18)
- linux (12)
- 网络 (20)
- VMWare (1)
- 面试 (7)
- c++ (55)
- 设计模式 (3)
- db (9)
- office (2)
- FS (1)
- rest (3)
- Ajax (2)
- Spring (2)
- Hibernate (3)
- matlab (1)
- load balancing (8)
- 分布式计算 (2)
- 易语言 (1)
- apache tomcat (1)
- 测试 (1)
- 数据结构 (5)
- 数学 (13)
- 服务器 (9)
- 读后感 (4)
- 好书介绍 (1)
- script (3)
- wordpress (2)
- delphi (21)
- pascal (8)
- xml (3)
- 趣味 (1)
- PHP (3)
- python (13)
- DLL (4)
- openGL (8)
- windows (2)
- QT (28)
- django (7)
- jquery (1)
- 数据挖掘 (7)
- nginx (1)
- js (1)
- mac (1)
- hadoop (3)
- 项目管理 (1)
- 推荐系统 (1)
- html (1)
最新评论
-
晴天1234:
related remove:attention.ibus和u ...
UBUNTU的默认root密码是多少,修改root密码 -
美丽的小岛:
美丽的小岛 写道如上配置好就得了。提示没有OpenGl.dll ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
如上配置好就得了。提示没有OpenGl.dll之类的,再增加入 ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
主要是理清哪两个对象之间的关系,是信号与所有槽的关系或者是槽与 ...
QT之DisConnect -
美丽的小岛:
LPCTSTR类型:L表示long指针 这是为了兼容Windo ...
QString与各种字符串之间的转化
最近遇到一些总是让人觉得奇怪的事情,例如,有个同学问我一个C语句:
(*(void (*)())0)() ;
这个语句的功能?
有点令人无语,呵呵。从学习C语言以来都没有遇到这样的的语句。不过,直觉告诉我,这个东西一定非常有意思。研究了一些时间,知道这个是用来模拟开机时设计的一个C语句声明,计算启动时,从地址为0开始调用这个函数。
与声明有关系的还有一个叫做类型转换。例如:声明为--int i ;转换为--(int).这个我一直容易混乱,看似十分的简单,但某个时候会混乱。这里是把声明的变量拿掉,用一个括号括在里面。
例如:
int (*fp) fun(int) ;//声明了一个函数指针
(int (*) fun(int)) 1000 ;//把1000转换成一个函数指针
呵呵,慢慢发觉这个东西很有意思了:
#include<stdio.h> //void (*show(int,void(*)(int)))(int);注意声明与类型转换不同。变量得放在参数的位置。 void show1(int a){ printf("a=%d\n",a) ; } void show2(int b){ printf("b=%d\n",b) ; } void (*show(int s,void(*p)(int)))(int){//show函数返回值为函数指针形参1为整型,形参2为函数指针类型 (*p)(s); return show2 ; } int main(char * arg[]){ (*show(100,show1))(100) ; void (*f_p) (int) ;//声明指向函数的指针 int * int_p ;//声明指向整型的指针 f_p = (void (*)(int)) 100 ;//整型转换成指向函数的指针 printf("%d\n",sizeof(f_p)) ;//求出指向函数指针的大小 printf("%d\n",sizeof(int_p)) ;//求出指向整型指针的大小 return 0 ; }
结果:
其实上面如果加上了typedef成为下面的那样:
#include<stdio.h> typedef void (*fp)(int) ; //fp show(int, fp); void show1(int a){ printf("a=%d\n",a) ; } void show2(int b){ printf("b=%d\n",b) ; } fp show(int s,fp p){ (*p)(s); return show2 ; } int main(char * arg[]){ (*show(100,show1))(100) ; fp f_p ;//声明指向函数的指针 int * int_p ;//声明指向整型的指针 f_p = (fp) 100 ;//整型转换成指向函数的指针 printf("%d\n",sizeof(f_p)) ;//求出指向函数指针的大小 printf("%d\n",sizeof(int_p)) ;//求出指向整型指针的大小 return 0 ; }
我们得好好感谢想出typdef这位前辈,能让代码简单与明了这么多。呵呵,,有感于这一瞬间。
发表评论
-
vs2008【断点无效】解决方法
2015-04-13 10:05 788有时候,我们在用vs2008调试的时候,会出现断点无效。如下 ... -
C++模板之特化与偏特化详解
2015-01-07 14:44 835转自:http://www.jb51.net/a ... -
c++中的typename与class<转>
2015-01-07 08:51 829在泛型编程的形参表中,关键字typename和class具有 ... -
traits:Traits技术初探
2015-01-06 12:49 799概述:traits是一种特性萃取技术,它在Generic ... -
POD型别
2015-01-06 12:37 769POD全称Plain Old Data。通俗的讲,一个类或结 ... -
c++核心基础知识(内存管理)
2015-01-04 22:22 704内存管理是C++最令人切 ... -
内存分配器<转>
2015-01-04 22:07 1389题记:内存管理一直 ... -
operator new在C++中的各种写法
2015-01-04 19:27 1204http://blog.sina.com.cn/s/blo ... -
可变参数va_list
2014-12-26 17:45 8811.要在函数中使用参数,首先要包含头文件<stdarg ... -
map注意的两个问题
2014-12-11 14:21 641代码1 void main() { ... -
关于C++ const 的全面总结<转>
2014-11-14 12:56 760C++中的const关键字的用法非常灵活,而使用const ... -
C++DLL编程详解
2014-10-08 19:44 1654DLL(Dynamic Link Library)的 ... -
C++&&QT调试时出现的一些错误
2014-10-08 15:14 787错误 原因 解决 ... -
【转】C++ function、bind以及lamda表达式
2014-09-11 09:42 880本文是C++0x系列的第四篇,主要是内容是C++0x中新增 ... -
STL函数对象及函数对象适配器【转】
2014-09-10 09:24 495一 函数对象Functor STL中提供了一元和 ... -
typedef和typename关键字[转]
2014-09-10 09:21 6911、类型说明typedef 类型说明的格式为: type ... -
C/C++中extern关键字详解[转]
2014-09-09 11:38 5061 基本解释:extern可以置于变量或者函数前,以标示变量 ... -
MYSQL在C—API 中可用的函数
2014-08-24 23:03 609mysql_affected_rows() 返 ... -
C & C++的编译
2014-08-12 09:21 517C/C++编译过程 C/C++编 ... -
C++全局变量的声明和定义
2014-08-11 20:51 438(1)编译单元(模块 ...
相关推荐
### C语言隐式类型转换规则详解 #### 一、引言 C语言作为一种广泛使用的编程语言,具有严格的类型检查机制。在C语言中,不同类型的数值可以通过类型转换来进行混合运算。这种转换分为两种:隐式类型转换和显式类型...
转换过程中可能会遇到挑战,比如C语言中的结构体与Delphi的记录类型对应,C的动态内存分配在Delphi中需要通过`new`和`free`操作。 标签中的“C-to-delphi”和“转换脚本”表明这个工具可能不仅是一个图形用户界面...
在C语言中,数据类型转换是一个核心概念,是程序设计中的基础知识点。本文针对C语言的数据类型转换方式及其常见问题进行了深入探讨。 首先,C语言中的数据类型转换分为隐式转换和显式转换两种。隐式转换,又称为...
- 显式类型转换:使用`(type)`强制转换表达式的类型,例如`(int)3.14`将浮点数转换为整数。 7. **typedef关键字** - `typedef`可以用来为已有的类型创建别名,提高代码可读性,例如: ```c typedef int Integer...
- **隐式转换**:自动进行的数据类型转换,通常发生在不同数据类型的混合运算中。 - **显式转换**:通过类型转换运算符手动指定转换。例如: ```c int a = 10; float b = 20.5; double result = (double)a / b; ...
在C语言中,类型转换是编程过程中的重要概念,它涉及到数据类型的相互转换。自动转换(也称为隐式转换)和强制转换(显式转换)是C语言中两种主要的类型转换方式,它们都有各自的规则和应用场景。让我们深入探讨一下...
例如,C语言中的函数定义在Pascal中需要转换为过程或函数声明,变量声明的语法也大相径庭。C语言的指针概念在Pascal中通常用引用或者记录类型来模拟,因为Pascal不支持直接的指针操作。 C语言中的控制结构,如if-...
`UnixTime.c`包含了实现两个转换功能的函数,而`UnixTime.h`则包含了它们的原型声明以及结构体的定义。 1. **日期转换为时间戳**:这个函数可能接收一个结构体参数,该结构体包含年、月、日等日期信息,然后通过...
例如,一个简单的实现方式是将图片数据视为一个大的字节数组,然后逐行读取图片数据并将其转换为C语言的char类型数组。 Python脚本可以先遍历指定目录下的所有图片文件,使用Python的图像处理库如PIL(Python ...
3. **语义分析**:此阶段检查程序的逻辑正确性,例如类型匹配、变量声明等,并开始生成与LC-3架构兼容的中间表示。在C语言中,如`int a = 5;`会被转换为LC-3的内存分配和数据加载指令。 4. **目标代码生成**:最后...
在C语言中,声明变量时需要指定其数据类型,例如int num;。变量名是标识符,它们必须遵循一定的命名规则,通常使用小写字母和下划线组合,避免与关键字冲突。变量在内存中占有特定的存储空间,通过变量名访问其存储...
根据给定的信息,我们可以深入探讨一个关于C语言中字符大小写转换的知识点。这个知识点主要集中在如何使用C语言实现字符串中的字母从大写到小写的转换。下面将详细讲解涉及的相关概念、代码逻辑以及实现原理。 ### ...
需要注意的是,在 C 语言中没有将字符 char 类型转换为 int 类型的方法,需要自行运算[temp[i] - '0']则是将 char 转换为 int 的方法。 下面是使用 C 语言实现二进制转换十进制的代码: ```c #include "stdio.h" #...
总的来说,理解C语言中的数据类型转换对于编写高效且无误的代码至关重要。无论是隐式还是显式转换,都需要根据具体需求谨慎处理,以避免不必要的精度损失或类型不匹配导致的错误。在实际编程中,应始终注意类型转换...
类型转换在C语言中是常见的操作,可以使用强制类型转换(如 `(type)expression`)将一个类型的值转换为另一个类型。需要注意的是,不同类型之间的转换可能导致精度损失或溢出,程序员需要确保转换的安全性。 在编写...
C语言是一种广泛使用的编程语言,...了解它们如何工作、如何进行类型转换以及何时使用合适的数据类型,将有助于编写出更有效和易于理解的代码。在实际编程中,正确选择和使用数据类型是优化程序性能、减少错误的关键。
表达式的计算规则和类型转换也是关键点。 2. **第04章_选择结构程序的设计.ppt**:这部分内容涵盖条件控制语句,包括if-else语句和switch-case语句,它们用于实现基于条件的程序流程控制。 3. **第05章_循环结构...
在C语言中,数据类型转换是将一种数据类型转换为另一种数据类型。例如,float x = 10.5; 将浮点数10.5赋值给浮点型变量x。题目2所示的语句中,正确的选项是C) x=(int)(x*100+0.5)/100.0;,因为这条语句将浮点型变量x...
这可能涉及到识别特定的注释、数据类型声明、数组声明等。 2. **数据转换**:解析后的数据被转换为二进制格式。例如,整型、浮点型或结构体会被转化为相应的字节序列。 3. **生成BIN文件**:转换后的二进制数据被...