为什么这段指针代码不能乱指

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:21:17
指针不是任意指都行的吗?
怎么这个就不能呢?(TURBOC说问题出在printf)

#include<stdio.h>
main()
{
int i;
int *ip;
ip = &i;
i = 101;
printf("%d,%d,%d,%d\n",i,*i,ip,*ip);
*ip = 1500;
printf("%d,%d,%d,%d\n",i,*i,ip,*ip);
}

错在 *i,i 声明为整型变量,不是地址变量,所以它没有 *i 形式,要有,* 是 乘号的 意思。

只有指针才有 *ip 形式,在语句里 *ip 表示 指向的对象,在语句里ip 表示 指针 单元。

问题不是出在指针的指向,是你的输出函数
printf("%d,%d,%d,%d\n",i,*i,ip,*ip);写得有问题,其中要输出的第二个参数*i,若你想输出变量i的存储内容直接写i或者*(&i)就行了;若你要监视变量的地址则写&i;

你的程序应该这样写:
#include <stdio.h>
void main()
{

int i;
int *ip;
ip = &i;
i = 101;
printf("%d,%d,%d,%d\n",i,*(&i),ip,*ip);
*ip = 1500;
printf("%d,%d,%d,%d\n",i,*(&i),ip,*ip);

}//Written H.Y.