我爱橙 发表于 2022-3-6 17:49:59

NO.116 正确赋值指针

Q:若有说明: int *p1,*p2,m=5,n;以下均是正确赋值语句的是
A.p1=&m;p2=&p1;
B.p1=&m;p2=&n;*p1=*p2;
C.p1=&m;p2=p1;
D.p1=&m;*p2=*p1;

为什么只有C正确?

大马强 发表于 2022-3-7 10:24:49

A.p1=&m;p2=&p1;
p2 = p1;

B.p1=&m;p2=&n;*p1=*p2;
能力有限,我不确定哪个是有问题,用排除法我认为是 *p1 = *p2 ,改成 p1 = p2

D.p1=&m;*p2=*p1
同B

sunsg 发表于 2022-3-8 10:12:49

p1=&m;p2=p1

我爱橙 发表于 2022-3-12 17:03:40

A.
p2=&p1;
cannot convert 'int**' to 'int*' in assignment

B.
#include <stdio.h>
#include <math.h>

int main()
{
       int *p1,*p2,m=5,n;
           p1=&m;
           p2=&n;
           *p1=*p2;
          
           printf("&m=%d\n", &m);// &m=6487564
       printf("&n=%d\n", &n);       // &n=6487560
      
           printf("p1=%d\n", p1);   // p1=6487564
           printf("*p1=%d\n", *p1); // *p1=67

           printf("p2=%d\n", p2);   // p2=6487560
           printf("*p2=%d\n", *p2); // *p2=67
       
          
      return 0;
}


C.
#include <stdio.h>
#include <math.h>

int main()
{
       int *p1,*p2,m=5,n;
      
           p1=&m;
           p2=p1;
          
           printf("&m=%d\n", &m);// &m=6487564
      
           printf("p1=%d\n", p1);   // p1=6487564
           printf("*p1=%d\n", *p1); // *p1=5
          
          
           printf("p2=%d\n", p2);   // p2=6487564
           printf("*p2=%d\n", *p2); // *p2=5
       
          
      return 0;
}


D.运行无显示
页: [1]
查看完整版本: NO.116 正确赋值指针