我的世界天空工厂2.5:关于指针的一个问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/19 18:17:40
我们老师说:"如果有两个指针(例如:int *p和float *p),如果两个指针加一后所越过的字节数相同,那么它们之间可以互相赋值,但是我举的那个例子就是不可以互相赋值,这是为什么呢?指针在内存中是怎么表示的?

是可以赋值的,我有编译运行通过的代码
#include "stdio.h"
main()
{
int a=10;
int *p=&a;
float b=1.2;
float *fp=&b;
p=fp;
printf("%d,%f",*p,*fp);
}

每定义一个指针就是在内存开辟一块新的空间,通俗的讲指针就是指向内存的某一块空间。
p为指针,(*p)为该指针的地址,*(*p)为取出该地址里的值。
int *p;的*是声明P是一个指针,而在后边用的时候*p的*是指该指针的地址。

指针嘛,可以顾名思义一下,就是“指”向一块内存的一根“针”,为什么是针呢?因为内存空间没有“体积”,针尖很小,可以满足“要求”。
指针中的内容包括指向的内存空间的地址的第一个位置和该指针变量的长度。

int类型和float类型的长度都是4B,是可以互相赋值的,只是会出现警告性错误。