问我指针的概念,请简单详细地解释一下,回答好就给10分。

发布于 时尚 2024-04-02
21个回答
  1. 匿名用户2024-01-27

    1、ptr_int, point_1.这里的下划线没有任何特殊之处,只是两个变量名称,您可以不加下划线。

    2. ptr int 是一个指针,它的内存包含一个整数内存的地址,即 0f0ah

    相反,它的意思是获取地址,ptr int 获取指针的地址。

    ptr int 是指针指向的内存内容,在本例中为 10

  2. 匿名用户2024-01-26

    因为指针是一个变量,所以指针本身需要空间来存储。

    ptr int 的地址是 0f02

    ptr int 的值为 0f0a,从您的图中,您没有看到将值分配给 ptr int 的语句,这应该是一个示例。

    ptr int 是访问 0f0a,如果 0f0a 存储为 int a; *ptr int 等价于 a。

  3. 匿名用户2024-01-25

    1.这些下划线没有任何实际意义,并且允许使用字母和其他有效符号的任意组合来命名指针(只要它不是系统的保留字)。 但是,根据自己的编程写作风格组合标识符有利于程序的可读性。

    2.这个有点令人困惑,因为你不明白它。 这意味着指针需要 4 个字节来存储,例如,当声明时:

    int *ptr_int;

    float *point_1;

    在这两个语句中,如果指针 ptr int 放置在内存中的地址 0f02h 处,则指针点 1 应放置在从 0f06h 开始的内存单元中。 这就是 &ptr int=0f02h 和 &point 1=0f06h 在 ** 中的含义。 后面的手写 *ptr int=10 表示如果指针 ptr int 指向的内容是 10,那么它应该从 0f0ah 开始存储。

    其实这里只是为了解释指针和指针指向的数据是怎么存储的,这个**记录是不完整的,如果真的要这样写,是无法编译的。 由于指针 ptr int 尚未赋值,因此应先将其定义为变量 int a=10,然后再定义为 *ptr int=&a。

    你不必担心,你只需要粗略地掌握数据是如何存储在内存中的,当涉及到实际编程时,人们不需要关心......希望对您有所帮助!

  4. 匿名用户2024-01-24

    scanf 语句要求在末尾提供整数数据存储地址。

    a.&pa 错误,变量 pa 存储一个地址,地址本身不是整数数据,输入数据作为地址数据存储在变量 pa 中,这会导致 pa 指向的存储区域指向系统内存的错误地址,这会给下一步 pa 的使用带来麻烦;

    b.*PA是错误的,*PA是PA指向存储区域(A)的值,这是一个整数值,没有给A赋值,使用存储在A中的数据作为地址是有问题的,这个指针是一个“百搭”指针;

    False,这与 B 的情况相同,A 的值为 *Pa

    没错,pa 是指向整数存储的指针,它已被分配给变量 a,输入的整数数据将存储在变量 a 的存储中。

  5. 匿名用户2024-01-23

    int a,*pa=&a;这是声明。 *声明中的 PA 是指针。

    声明类型 int 变量 a。

    声明 int 指针 pa,并初始化 -- 使其指向变量 a 的地址。

    scanf(..Yes 语句。

    在语句中,*pa 是指针指向的值。

    在语句中,pa 是指针指向的地址。

    在语句中,a 是变量 a 的值。

    在语句中,&a 是变量 a 的存储地址。

    &pa 在语句中什么都没有,它有语法错误。

    scanf("%d",..语句的第一部分(括号内)是输入格式说明,%d 是十进制整数格式的输入。

    在括号中,第二部分是输入数据的地址、请求变量的地址或指针指向的地址。

    a,pa没什么,有语法错误。 所以这不是真的。

    b,在语句中,*pa 是指针指向的值,而不是指针指向的地址。 所以这不是真的。

    c,其中 a 是变量 a 的值。 它也不符合要求。 所以这不是真的。

    d、语句中,pa是指针指向的地址,满足要求,正确答案是选择它。

    上面特别强调了声明和声明。 这是因为看起来相似的东西在语句中的含义与在语句中的含义不同。 例如,在声明 *pa=&a; - 将 a 的地址分配给 pa

    在语句中,write pa = &a -- 将 a 的地址分配给 pa

    在语句中,写 *pa = a -- 将 a 的值赋值给 pa

    遇到 char *pa; 更烦人。

  6. 匿名用户2024-01-22

    int a,*pa=&a;这句话可以分解为:

    int a;

    int *pa;

    pa=&a;

    scanf 函数获取整数时,需要证书的地址,即 int * 类型,满足 int * 类型的只有 &a 和 pa

    因此,选择了 D

  7. 匿名用户2024-01-21

    dscanf 要求提供变量的地址。

    那么BC是不对的。

    如果要在 A 选项中输入 a,则需要 A 的地址,但 &pa 是 Pa 的地址,所以不是真的。

  8. 匿名用户2024-01-20

    p++ 和 *++p 的区别在于,前者间接地向 p 求助,然后自动递增 p(即,p 指向当前指向该对象的对象之后的对象的地址),而 *++p 先自动递增 p,然后间接地向 p 求助。 如图所示

    p--vs. --p 与上述情况类似,不同之处在于它们指向当前指向的对象。 不过,值得注意的是:

    指针之间的减法是合法的,而指针之间的加法则不合法,例如:

    所以:<>

    以下是需要注意的几点:

  9. 匿名用户2024-01-19

    假设 k 是一个指针。 如:int *k;

    k 的地址是 1044,这意味着 k=1044

    k 的内容是 1052 描述 *k = 1052

    k+1 = 1052+1 = 1053

    上述陈述含糊不清,没有严格说明。 问题本身不够严谨,答案也错了,但你的理解也有问题。

    指针变量是用于存储地址的变量,int *k ; k 是一个指针变量,其值为地址 a,地址 a 包含数据 b。 而 k 本身会存储在一个地址中,可以用 &k 获得。

    a对应1044以上,b对应1052,k以上是内存地址,如0xfff0ab12

    该操作后必须跟一个指针变量(否则是错误的),它指示操作地址(引用、修改)中的数据。

    操作,后跟任何变量,该变量表示从中获取变量的地址。 &k 是 K 变量的存储地址。

  10. 匿名用户2024-01-18

    要了解指针是地址。

  11. 匿名用户2024-01-17

    对于 char*a; ,“”“的优先级高于”*“,等价于*(a),即a是数组,数组元素是char*类型的指针。

    --a 优先级是计算 a first,这意味着 a 必须先是一个数组,然后是 *,即数组中的每个元素都是一个指针,称为指针数组。

    对于 char*a; ,a 是 char* 类型的指针。

    --a) 表示 *a 必须首先是一个指针,并且该指针指向的数据类型是一个数组,称为数组指针。

  12. 匿名用户2024-01-16

    p 是指向 int 类型的指针。 *p 表示指针 p 指向的地址的值。

    从 p=a 可以看出,p 指向数组 a 的第一个地址。

    所以第一个循环是给数组的元素赋值a[0] a[9],循环完成后,p指向a[10],然后用p越界......

    在第二个循环中,你应该要打印 a 的 10 个元素的值,但你应该始终打印 *p 的值,即 a[10] 的值,因为它已经越界了,它是一个不确定的值,程序可能会挂断。

    第二个可以更改为如下所示:

    for(i=0,p=a;i<10;i++,p++) 或 for(i=0; i<10;i++)

  13. 匿名用户2024-01-15

    printf() 函数的声明原型如下所示。

    int printf(const char *format,[argument]);

    格式格式为 %d、%f,这意味着以下参数是相应的输入类型。

    例如:printf("%d",n);%d 表示整数,即 n 必须是整数,即 int

    然后你的 printf("a[%d]=%d",i,*p);这意味着数组 a[i]=*p 被打印出来,p 是指向数组 a 的指针。

    其实这个循环有个问题,p已经越线了,p应该打印出来--,是:a[0]=9,a[1]=9,..

    printf("a[%d]=%d",i,*p--) 让指针 p 一次返回一个 int

  14. 匿名用户2024-01-14

    首先,您需要明确:

    数组的名称实际上是一个指针;

    p 指示指针 p 指向的值。

    然后第一个循环是为数组中的元素赋值。

    第二个循环逐个打印数组中的元素。

  15. 匿名用户2024-01-13

    打印“a[i]=*p”数组。 *p 是指针的内容,其前面有一个值。

    看看 printf 的打印格式。

  16. 匿名用户2024-01-12

    请注意,在定义指针 p 后,您不会为其赋值 (p=&a),因此 p 的地址值是由系统任意分配的。 也就是说,他没有指向 A。 *p=a;

    角色的知识将 a 的值支付给 p 指向的空间值 1。 所以后来 a 更改了并且没有更改 *p 的值。

    第一个问题已经回答过了,那就是系统随意分配。 但这样做是危险的,因为你不知道 p 指向哪里。 如果指向对系统很重要的数据,则后续分配可能会使系统崩溃。

    因此,我们希望尽量避免这种程序。 否则可能会导致您的计算机出现故障。 使用函数 calloc 或 malloc 是安全的。

  17. 匿名用户2024-01-11

    问题一和问题二可以归结为一个问题,对吧? 您确定输出结构是 2 1 2 吗? 而不是应该在 *p = a 中; 此语句的程序是否用完了?

  18. 匿名用户2024-01-10

    int a, *p;定义一个整数变量,其指针指向整数 a = 1; 为整数变量分配初始值 1

    p = a;将 1 分配给指针 p 指向的地址 [此行 ** 有致命错误!! 如果不初始化 p 指向的地址,很容易出现访问非法内存区域的错误

    用于将初始值分配给整数指针的方法。

    方法一:int*p;

    p = (int*)malloc(sizeof(int));

    方法二:int *p, a;

    p = &a;

  19. 匿名用户2024-01-09

    因为 [ ] 运算符的优先级高于 *,所以我们根据优先级对它进行排序:

    第一个 p 与数组中具有 2 个元素的数组组合,然后与 * 组合,表示数组中元素的类型是指针加 int P 是 2 个元素的数组,数组中的元素是指向类型类型的指针。

    第二个 p 先和 * 组合(因为有一个 () 改变优先级),表示 p 是一个指针,然后和 [2] 组合表示它指向一个有两个元素的数组,然后和 int 组合,表示数组中的元素是整数。

    所以 p 是一个指向两个元素的数组,并且该元素的类型为整数。

  20. 匿名用户2024-01-08

    第一个正确,第二个不正确,应该是指针数组,这是指向整数的两个指针。 可以参考《指针的艺术》,我觉得这本书很不错。

  21. 匿名用户2024-01-07

    楼上错了!!

    int *p[2];它是一个指针数组,数组包含指针(数组包含两个指针元素)。

    int(*p)[2];是一个数组指针,一个数组指针一个数组指针是指向数组第一个元素地址的指针,它本质上是一个指针;

    指针数组是数组的元素是指针的数组,其本质是数组。

相关回答
18个回答2024-04-02

你好! 对于您的疑问,我将分开:

一是产品包装(箱)上标明的地址与商标注册证上的地址不一致是否违法。 商标法中没有这样的禁止,只要旧卷足以让消费者识别出你的产品与其他商品的生产者不同。 但这种用法有一个基本前提: >>>More

23个回答2024-04-02

好吧,你在问什么问题? 我看不出你的问题,只要能帮到你,大家都会愿意帮忙。

11个回答2024-04-02

1.染发膏的品质久了会褪色,好的染发膏的颜色不会太明显; 至于不好的染发膏,你不需要等太久,一个月左右,就会变成发黄似的发色; >>>More

6个回答2024-04-02

新手学习烹饪的步骤。

1.第一次用手做饭,不要紧张,其实很简单,记住在煮熟的菜的基础上加入相应调味料的要点,注意不要煮糊状。 >>>More

6个回答2024-04-02

你好! 我觉得荣耀V8还是很不错的,双镜头设计让荣耀V8快速拍出不一样的好**。 双镜头、双传感器和双ISP(图像处理芯片)可以使进入的光量和敏感区域增加一倍。 >>>More