为什么指针变量可以当做整形数据输出
1个回答
2017-09-30
展开全部
第一,对于题中的指针变量p(用于存放内存单元的编号);要是直接将0以外的其它整数,直接赋值给它,程序就会报错了!但是把整数0赋值给它,却没有报错,是因为这时程序已将0看成是内存中地址编号为0的字节地址了!指针变量存放地址,当然就不会报错了;至于程序为什么不把其它整数也看成地址这个我也就不清楚了。
第二,p++为什么成了4?如第一中指出的,p没有自增以前存放地址是编号0,自增一次就应该是1呀!那有为什么是4呢! 这个和数据类型存储所占的字节数还有存放首地址的规定有关,如果一个整型变量 i 占4个字节,取 i 的地址赋给整型指针变量p,则变量p中存放的是 i所占4个字节 中的第一个字节的地址(这个是规定),当执行p++后,执行结果是,p中存放的地址往后数四个字节了(这个和数组操作相同,数组名存放第一个元素的地址,但数组名加一,就存放其第二个元素的地址了);如果是一个字符型变量 i,本身只占一个字节,取地址存放在字符型指针变量p中,执行p++,后,结果是p中存放地址往后数一个字节了。
第二,p++为什么成了4?如第一中指出的,p没有自增以前存放地址是编号0,自增一次就应该是1呀!那有为什么是4呢! 这个和数据类型存储所占的字节数还有存放首地址的规定有关,如果一个整型变量 i 占4个字节,取 i 的地址赋给整型指针变量p,则变量p中存放的是 i所占4个字节 中的第一个字节的地址(这个是规定),当执行p++后,执行结果是,p中存放的地址往后数四个字节了(这个和数组操作相同,数组名存放第一个元素的地址,但数组名加一,就存放其第二个元素的地址了);如果是一个字符型变量 i,本身只占一个字节,取地址存放在字符型指针变量p中,执行p++,后,结果是p中存放地址往后数一个字节了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询