我这C语言代码自学关于指针问题,运行出现这样的问题11 invalid conversion from `int' to `int*'

#include<stdio.h>
#include"stdlib.h"
int main()
{
int i,j,k;
int *q;
scanf("%d %d %d",&i,&j,&k);
if(i>j)
{
if(i>k)
q=i;
else
q=k;
}
else
q=j;
printf("%d",*q);
return 0;
system("pause");
}

指针与变量不能直接赋值,只有(*q)才能和变量进行赋值,并且必须先给指针分配内存空间,所以直接把q=i编程(*q)=i是不行的。
有两种该法:
#include<stdio.h>
#include"stdlib.h"
int main()
{
int i,j,k;
int *q;
q=(int*)malloc(sizeof(int));
scanf("%d %d %d",&i,&j,&k);
if(i>j)
{
if(i>k)
*q=i;
else
*q=k;
}
else
*q=j;
printf("%d",*q);
return 0;
system("pause");
}
这样就行了
或者是#include<stdio.h>
#include"stdlib.h"
int main()
{
int i,j,k;
int *q;
scanf("%d %d %d",&i,&j,&k);
if(i>j)
{
if(i>k)
q=&i;
else
q=&k;
}
else
q=&j;
printf("%d",*q);
return 0;
system("pause");
}
楼上几位好像没有给指针分配空间,所以有点小瑕疵,哈哈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-18
int i,j,k; // i j k 都是整形,不能与*
int *q;// q是指针类型,要保存值,应该在前加*

#include<stdio.h>
#include"stdlib.h"
int main()
{
int i,j,k;
int *q;
scanf("%d %d %d",&i,&j,&k);
if(i>j)
{
if(i>k) *q=i; // 你的代码 少了 * 号 ,不是 q=i ;
else *q=k; //你的代码 少了 * 号 ,不是 q=k ;
}
else
{
*q=j;
}
printf("%d\n",*q);
system("pause");
return 0;
}
第2个回答  2011-09-18
#include<stdio.h>
#include"stdlib.h"

int main()
{
int i,j,k;
int *q;
scanf("%d%d%d",&i,&j,&k);
if(i>j)
{
if(i>k)
*q=i;
else
*q=k;
}
else
*q=j;
printf("%d",*q);
system("pause");
return 0;
}
q是指针变量,必须去内容才可以赋值,*q=i;
第3个回答  2011-09-18
i,j,k是整型,而q是指针,不能相互赋值的,指针指向的是地址
第4个回答  2011-09-18
类型错了,q是指针 * q=i; 下边也这么改,或者q=&i