首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针有关问题?

2012-04-15 
指针问题?在线等~~!#includestdio.hmain(){staticinta[3][4]{1,3,5,7,9,11,13,15,17,19,21,23}int*pf

指针问题?在线等~~!
#include   <stdio.h>
main()
{
static   int   a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int   *p;
for(p=a[0];p <a[0]+12;p++)
if((p-a[0]%4)==0))   printf( "\n ");
printf( "%4d ",*p);
}

[解决办法]
void main()
{
static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p <(int *)(a+12);p++)
{
if ( (p-(int *)a)%4==0 )
printf( "\n ");
printf( "%4d ",*p);
}
}


按楼主的意思应该这么写才会稍微对点





[解决办法]
#include <stdio.h>
void main()
{
static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p = a[0];
for(; p <(int *)a+12;p++)
{
if ( (p-(int *)a)%4==0 )
printf( "\n ");
printf( "%4d ",*p);
}
}

再改改,,,这样才是最后正确结果


[解决办法]
括号不匹配,这样:if(((p-a[0])%4)==0)

main()
{
static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p <a[0]+12;p++)
if(((p-a[0])%4)==0) printf( "\n ");
printf( "%4d ",*p);
}
[解决办法]

#include <stdio.h>

void main(void)
{
static int a[3][4]={1,3,5,7, 9,11,13,15, 17,19,21,23};
int *p;
for (p = a[0]; p < (a[0]+12); p++)
{
if ( (p - a[0])%4 == 0)
printf( "\n ");
printf( "%4d ",*p);
}
}
[解决办法]
for(p=a[0];p <a[0]+12;p++)
if((p-a[0]%4)==0)) printf( "\n ");
printf( "%4d ",*p);
==》
for(p=a[0];p <a[0]+12;p++)
{ //大括号 复合语句
if(((int)(p-a[0])%4)==0)printf( "\n ");
printf( "%4d ",*p);
}
[解决办法]
这样还是报错:ILLegal use of pointer in function main
问题出在p-a[0]%4==0,因为在这里取模运算符%的优先级比-和==都要高,所以最先进行的运算是a[0]%4,而a[0]实际上是一个指针,指针不支持取模运算.
另外要对FOR循环体加上{},不然的话当IF条件成六时执行完 printf( "\n ");//没有原先的括号
之后printf( "%4d ",*p);不会执行的.

热点排行