设为首页 加入收藏

TOP

C语言中强制类型转换目的、基本格式、C中变量的本质含义(二)
2017-11-10 08:32:55 】 浏览:500
Tags:言中 强制 类型 转换 目的 基本 格式 变量 本质 含义

将一个unsigned型数据赋给一个占据同样长度存储单元的整型变量时(如:unsigned→int、unsigned long→long,unsigned short→short) ,原值照赋,内部的存储方式不变,但外部值却可能改变

用强制类型转换是一个好习惯,这样,至少从程序上可以看出想干什么。


四、指针变量强转规则:

(1)指针变量强转,改变了指针取址能力。

(2)一个指针涉及2个变量:一个是指针变量自己本身,一个是指针变量指向的那个变量

(3)int p;定义指针变量时,p(指针变量本身)是int 类型,*p(指针指向的那个变量)是int类型的。

(4)int 类型说白了就是指针类型,只要是指针类型就都是占4字节,解析方式都是按照地址的方式来解析(意思是里面存的32个二进制加起来表示一个内存地址)的。结论就是:所有的指针类型(不管是int 还是char * 还是double *)的解析方式是相同的,都是地址。

(5)对于指针所指向的那个变量来说,指针的类型就很重要了。指针所指向的那个变量的类型(它所对应的内存空间的解析方法)要取决于指针类型。譬如指针是int *的,那么指针所指向的变量就是int类型的。

#include 
  
   
int main(void)
{

    int a[3] = {0x11223344, 0x55667788, 0};

    int *p1 = a;
    printf("*p1 = 0x%x\n", *p1);         //*p1 = 0x11223344

    char *p2 = (char *)a;              //改变取址能力         
    printf("*p2 = 0x%x\n", *p2);      //*p2 = 0x44
    printf("*p2 = 0x%x\n", *(p2+1));   //*p2 = 0x33
    printf("*p2 = 0x%x\n", *(p2+2));   //*p2 = 0x22
    printf("*p2 = 0x%x\n", *(p2+3));   //*p2 = 0x11
    printf("*p2 = 0x%x\n", *(p2+4));   //*p2 = 0xffffff88 ?
    printf("*p2 = 0x%x\n", *(p2+5));  //*p2 = 0x77

    return 0;
}
  
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇利用C语言实现自杀环---约瑟夫环 下一篇C语言:抢红包程序代码“编程开发..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目