指针类型与指针指向类型理解
来源:互联网 发布:种子填充算法原理 编辑:程序博客网 时间:2024/05/02 09:18
今天在看一些C语言面试题时,遇到这样一个题目:
#include<studio.h>int main(){ unsigned int a = 0xFFFFFFF7; unsigned char i = (unsigned char)a; char *b = (char *)&a; printf("%08x,%08x",i,*b);}
我先说一下答案,0x000000F7 ,0xFFFFFFF7
关于指针,我经常听到或看到这两种说法,“指针类型与指针指向类型”,那这两种说法到底有什么关系呢?
首先,我们随便定义一个指针:
int *a;
那么,这里的int是什么含义呢?
我的解释:假设我们在32位的机器上,首先要知道的一点,不管怎样,无论是int *a,还是char *a;这里的a的值都是4字节,32位的。我认为指针类型与指针指向类型就是一个意思,这里都是表示: a这个变量的值,是一个int型变量的地址,因此,我们在给a赋值的时候只能将一个int型变量的地址值,赋值给它,即:
int b = 10;int *a;a=&b;
如果这样写:
char b = 'b';int *a;a=&b;
编译肯定会报错的。
此时如果,一定要这样写,就需要强制类型转换。
char b = 'b';int *a;(char *)a=&b;
那么转换之后,跟上面那道题目就几乎一样了,那么现在跟原来有什么区别呢?
其实转换之后,a本身的值还是4个字节的,但是此时他存储的是一个char型的变量的地址,所以可以说它指向一个char类型,或者此时指针类型是char。就是因为他还是4个字节,a本身没有变化,所以*a的值还是不变的。改成这样后的唯一变化就是:
a+1
之前a+1: 是地址的值+4,因为它指向的是int型现在a+1: 是地址的值+1,因为它指向的是char型
好了,现在看上面的题目应该知道怎么做了。
0 0
- 指针类型与指针指向类型理解
- const指针与指向const类型的指针
- 指针与指针类型
- 指向派生类型的指针
- 指向void类型的指针
- 指针类型问题??(指针指向问题)
- 关于空指针(指针指向为NULL)和void类型的指针的理解
- 深刻理解指针类型
- 深刻理解指针类型
- 指向常量的指针,指针常量,void类型指针
- 指针的类型 指针所指向 指向指针的引用
- 指针类型与指针类型的转换
- 指向函数的指针类型定义
- 指向结构体类型数据的指针
- 指向结构体类型数据的指针
- 指向结构体类型数据的指针
- 指向结构体类型数据的指针
- 指向结构体类型数据的指针
- matlab 产生不重复随机整数的序列
- 简版服务器(c语言实现) (多线程)
- 使用POI导入导出Excel2003、2007示例
- window下spyder的快捷键
- Servlet 上传页面图片 并存入Mysql数据库
- 指针类型与指针指向类型理解
- 成都胡牌
- java -- 关于对象在内存中的相关说明
- Win7和ubuntu双系统时间不对
- 在一个目录中保留最近30天的文件
- DAY02 学习心得
- 携程实时大数据平台实践分享
- java实现excel的导入导出(poi详解)
- SSH自动认证远程登录