C语言的指针类型包括两方面的信息:一是地址,存放在指针变量中;二是类型信息,关乎于读写的长度,没有存储在指针变量中,位于用该指针读写时的mov指令中,不同的读写长度对应的mov指令不同
指针存储了内存的地址,同时指针是有类型的,如int*,float*,那么,一个自然的猜想就是指针变量应该存储这两方面的信息:地址和指针类型,比如,就像下面的结构体:
代码如下:
struct pointer{
long address;
int type;
}
long address;
int type;
}
举个例子:打印sizeof(int*),值为4,可见4字节是存储内存地址用的,反过来就说明指针并没有存储类型信息的地方,那么指针的类型信息存放在哪儿呢?
下面剖析一段简单的代码。
代码如下:
// ma.cpp : 定义控制台应用程序的入口点。
#include “stdafx.h”
char gi;
char *pi;
#include “stdafx.h”
char gi;
char *pi;
void main()
{
来源gao@!dai!ma.com搞$$代^@码!网pi=&gi;
*pi=12;
}
以上就是C语言的指针类型详细解析的详细内容,更多请关注gaodaima搞代码网其它相关文章!