关于指针赋值的有关问题,求大神
关于指针赋值的问题,求大神
程序1
void main()
{
int a,b;
int *p1,*p2;
scanf("%d,%d",&a,&b);
p1=&a;p2=&b;
if(a>b) {p1=&a;p2=&b;}
else {p1=&b;p2=&a;}
printf("max=%d,min=%d\n",*p1,*p2);
}
程序2
void main(){
char str[100],*p;
int i=0;
printf("shuru:\n");
p=str;
gets(p);
while(*p++!='\0')
i++;
printf("%d",i);
}
首先2个程序都是正确的,第一个程序是先给P所指的对向赋值(使用前先赋值),而第二个程序我把gets(p)写到P=str上面运算结果就不对了,我想知道为什么指针指向整形数据是先赋值,指向数组怎么就后赋值了呢
------解决思路----------------------
因为第一个 scanf 操作的是 a 和 b 不是 p1 p2
第二个gets 操作的是 p ,如果gets 操作的是 str 那也是没问题的
------解决思路----------------------
首先2个程序都是正确的,第一个程序是先给P所指的对向赋值(使用前先赋值),而第二个程序我把gets(p)写到P=str上面运算结果就不对了,我想知道为什么指针指向整形数据是先赋值,指向数组怎么就后赋值了呢
写的没错啊, 不存在先赋值后赋值的问题。
程序1
void main()
{
int a,b;
int *p1,*p2;
scanf("%d,%d",&a,&b);
p1=&a;p2=&b;
if(a>b) {p1=&a;p2=&b;}
else {p1=&b;p2=&a;}
printf("max=%d,min=%d\n",*p1,*p2);
}
程序2
void main(){
char str[100],*p;
int i=0;
printf("shuru:\n");
p=str;
gets(p);
while(*p++!='\0')
i++;
printf("%d",i);
}
首先2个程序都是正确的,第一个程序是先给P所指的对向赋值(使用前先赋值),而第二个程序我把gets(p)写到P=str上面运算结果就不对了,我想知道为什么指针指向整形数据是先赋值,指向数组怎么就后赋值了呢
------解决思路----------------------
因为第一个 scanf 操作的是 a 和 b 不是 p1 p2
第二个gets 操作的是 p ,如果gets 操作的是 str 那也是没问题的
------解决思路----------------------
首先2个程序都是正确的,第一个程序是先给P所指的对向赋值(使用前先赋值),而第二个程序我把gets(p)写到P=str上面运算结果就不对了,我想知道为什么指针指向整形数据是先赋值,指向数组怎么就后赋值了呢
写的没错啊, 不存在先赋值后赋值的问题。