20分(不知道者勿扰)--关于指针、地址和整数的转换

来源:百度知道 编辑:UC知道 时间:2024/05/29 07:23:54
int i;
int * jp = &i;
int main(int i, char * argv[]) {
printf("%d %d\n", (int) &i, (int) jp);
}
打印结果相同吗,问什么

结果肯定不同啦. 分析如下:
i有两个, 一个是全局变量, 一个是形参.
jp 是个指向int的指针变量, jp的值就是全局变量i的地址, 即&i. 按理说(int)&i与(int)jp是相同的.但因为i有两个,且在输出时用的是形参i, 形参i的地址是在栈上分配的, 全局i的地址在数据区, 两都不可能相同, 所以结果也不同.而且这种代码的写法是不规范的.