我想问问这样的写法出错了? “”*“”有什么规则?
void main(){
int a,b;
int *pointer_1, *pointer_2,*p;
scanf("%d,%d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
*p=*pointer_1>*pointer_2?*pointer_1:*pointer_2;
printf("%d,%d\n",a,b);
printf("%d\n",*p);
}上面的*p=*pointer_1>*pointer_2?*pointer_1:*pointer_2;
出错了吗?为什么出错呢?
语句不能使用吗?
void main()
{
int a,b;
int *pointer_1, *pointer_2,*p;
scanf("%d,%d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
if(a>b) p=pointer_1;
else p=pointer_2;
printf("%d,%d\n",a,b);
printf("%d\n",*p);
}这是第一种解法
这是第二种解法void main()
{
int a,b;
int *pointer_1, *pointer_2;
scanf("%d,%d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
printf("%d,%d\n",a,b);
printf("%d\n",*pointer_1>*pointer_2?*pointer_1: *pointer_2);
}
最上面的为什么不行呢?语法错误吗?语法有什么规定吗?{:5_111:} 自己加上括号。。。不然没人记得这些运算符的优先级 鱼油们还是很活跃的嘛 根据下面两个例子看出 你的代码改的不错哦,有想法。 没错 那句是错了 跟后面的运算没关系(应该是吧,三目运算记不清楚了)既然你已经在使用*pointer_1来表示变量a 那么你也就知道它们之间的关系,我就不废话了 。 错在*p=...........; 这个指针变量你是把它当做普通变量来用了吧 你那些指针变量没有出问题是因为你都有给它赋一个变量,然后通过*的形式等价的当做普通变量使用 而你的p指针变量没有赋给任何普通变量,而你却使用*p的形式 当然编译器会报错,编译器认准了指针变量是只能用来存存储单元地址的,不可以用来存其它东西,甚至被当作普通储存单元用 你这样用是不合适的(明明它自己也是存储单元呀,为什么不能存其它东西呢= =,郁闷! 哦呵呵 这是一个不错的Hacker行为出发点呦 学了更多知识后,你可以突破这个由蠢蠢的编译器所限制的规则 加油!)
页:
[1]