C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)

强制类型转换形式:(类型说明符) (表达式)

举例说明:1) int a;

     a = (int)1.9;

     2)char *b;

      int *p;

       p = (int *) b; //将b的值强制转换为指向整型数据的指针类型,后赋给p

注示:类型说明符和表达式都必须加括号,表达式为单个变量可不加括号。

总结:只要看到(类型说明符) (表达式) 的一定为强制类型转换;如(int *) 0x0022;

再举一例:#define DIR *((volatile unsigned int *) 0x0022)

  volatile unsigned int *DIR = (volatile unsigned int *)0x0022;  //左右两边的类型说明符要一样

                        //这句与上句作用一样:DIR指向地址0x0022内存单元

  或者: volatile unsigned int *PADIR = (volatile unsigned int *)0x0022;
        PADIR = (volatile unsigned int *)0x11;

                                

C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)

时间: 2024-10-11 15:52:08

C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)的相关文章

C语言的 (强制类型转换) 以及 '字符字面值'

C语言的显式/隐式类型转换,都有一个中间变量的存在,原数据的类型.内容都不变. 以下代码,都用GCC编译. 1 #include<stdio.h> 2 3 int main() 4 { 5 printf("%d %d\n", 'a', sizeof((int)'a')); //输出为97,4. sizeof的作用对象为一个int型中间变量 6 7 char c = 255; 8 printf("%d\n", c); //输出-1. char型的c已溢出,

#define GPFCON (* (volatile unsigned long * )0x56000050 )

int a; int *p; p = &a; *p = 0x100; //a=0x100 p = (int *)0x56000050; *p =0x100; *( ( int * ) 0x56000050) = 0x100 加上volatile是为了防止编译器优化这个寄存器 #define GPBCON (*(volatile unsigned long *)0x56000010)#define GPBDAT (*(volatile unsigned long *)0x56000014) #de

C/C++强制类型转换、指针类型转换发生了什么

(1)强制类型转换 强制类型转换是对变量对应的内存里面的0和1按照新的类型进行重新解释的过程 代码: #include <iostream> using namespace std; int main(int, char *[]) { char c = 0xA0;//0xA0 [-128~127] 最高位为1表示负数 0xA0 = 1010 0000 = -96 //高位补0 0xA0->0xFF FF FF A0 = 0000 0000 0000 0000 0000 0000 1010

C语言的强制类型转换

1.什么是强制类型转换:遇到一些类型不同的一些数据之间的表达运算 ,需要将较高的数据类型转换成较低类型时. 2.强制类型的形式: (强制转换的类型)(表达式): 2.强制类型的使用: float a,b; int  c ; c=(int) (a+b);

指针之 *((volatile unsigned long *)(x))解析

今天重新温习了一下C语言的指针部分,突然想到了经常会碰见的一种宏定义:#define PGAS (*((volatile unsinged long *)(x))) 在解析该宏定义前,先看看指针变量的声明 声明一个int类型的指针变量:int* p; 仅仅是这样定义,这个指针是不能够直接拿来使用的,还必须给它赋值(初始化),例如: int a = 10; int* p = &a; 或: int a = 10; int* p; p = &a; 其中,&a表示变量a所代表的内存地址,所

C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换格式1 type-id(expression)//转换格式2 c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast.dynamic_cast.const_cast.reinterpret_cast,主要运用于继承关系类间的强制转化,语法为: static_cast<new_type> (expression) dynam

C++四种强制类型转换关键字

C语言使用强制类型转换(Type Cast)很简单,不管什么类型的转换,形式都如下: TYPE b = (TYPE)a; c++提供了4种类型转换操作符来应对不同场合的应用. const_cast  static_cast dynamic_cast reinterpreter_cast 4种关键字的使用形式如下: TYPE b = static_cast(TYPE)(a) 1.const_cast 去掉类型的const或volatile属性 const SA ra ={1} ; //ra.i =

C++强制类型转换

C语言强制类型转换过于粗暴,任意类型之间都可以进行转换,编译很难判断其正确性; 难于定位,在源码中无法快速定位所有使用强制类型转换的语句. C++将强制类型转换分为4种不同的类型:static_cast.const_cast.dynamic_cast.reinterpret_cast. 用法:xxx_cast<Type> (Expression) static_cast 强制类型转换 - 用于基本类型间的转换 - 不能用于基本类型指针间的转换 -用于有继承关系类的对象之间的转换和类指针之间的转

强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

已剪辑自: https://www.cnblogs.com/chenyangchun/p/6795923.html ? ? 1. c强制转换与c++强制转换 ?c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换格式1 type-id(expression)//转换格式2 ? c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast.dynamic_cast.const_cast.reinterpret_cas