我爱橙 发表于 2022-3-7 22:52:33

NO.163 指针非法赋值语句

本帖最后由 我爱橙 于 2022-3-7 22:52 编辑

Q:若有说明:int n=2,*p=&n,*q=p;
则以下非法的赋值语句是
A.p=q;
B.*p=*q;
C.n=*q;
D.p=n;



p          指向n地址的指针
*p      取指针指向地址的值即2
q          取指针p的值即n地址?
*q         取q的值即n地址的值即2 ?

风扫地 发表于 2022-3-7 22:59:12

p=n
p指针类型
n整数类型

实在要赋值,需要强转

sunsg 发表于 2022-3-8 10:17:45

斐波那契数列

我爱橙 发表于 2022-3-10 15:45:32

风扫地 发表于 2022-3-7 22:59
p=n
p指针类型
n整数类型


请问强转是怎么转啊

我爱橙 发表于 2022-3-10 15:53:41

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

int main()
{
      int n=2,*p=&n,*q=p;
   

          printf("n=%d\n",n);//n=2
          printf("p=%d\n",p);//p=6487564
          printf("*p=%d\n",*p);//*p=2
          printf("&n=%d\n",&n);//&n=6487564
      printf("*q=%d\n",*q);//*q=2
      printf("q=%d\n",q);//q=6487564
   

      return 0;

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

int main()
{
      int n=2,*p=&n,*q=p;
      p=n;
          printf("n=%d\n",n);//n=2
          printf("p=%d\n",p);//p=6487564
          printf("*p=%d\n",*p);//*p=2
          printf("&n=%d\n",&n);//&n=6487564
      printf("*q=%d\n",*q);//*q=2
      printf("q=%d\n",q);//q=6487564
   

      return 0;
      
}

7        8        p=n;
invalid conversion from 'int' to 'int*' [-fpermissive]

风扫地 发表于 2022-3-12 00:24:28

我爱橙 发表于 2022-3-10 15:53
A.B.C.




p指针类型
n整数类型

n = (int)p; 这个表达式可以正常求值,但一般没什么场合用到这个表达式
页: [1]
查看完整版本: NO.163 指针非法赋值语句