-
1、ptr_int, point_1.这里的下划线没有任何特殊之处,只是两个变量名称,您可以不加下划线。
2. ptr int 是一个指针,它的内存包含一个整数内存的地址,即 0f0ah
相反,它的意思是获取地址,ptr int 获取指针的地址。
ptr int 是指针指向的内存内容,在本例中为 10
-
因为指针是一个变量,所以指针本身需要空间来存储。
ptr int 的地址是 0f02
ptr int 的值为 0f0a,从您的图中,您没有看到将值分配给 ptr int 的语句,这应该是一个示例。
ptr int 是访问 0f0a,如果 0f0a 存储为 int a; *ptr int 等价于 a。
-
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。
你不必担心,你只需要粗略地掌握数据是如何存储在内存中的,当涉及到实际编程时,人们不需要关心......希望对您有所帮助!
-
scanf 语句要求在末尾提供整数数据存储地址。
a.&pa 错误,变量 pa 存储一个地址,地址本身不是整数数据,输入数据作为地址数据存储在变量 pa 中,这会导致 pa 指向的存储区域指向系统内存的错误地址,这会给下一步 pa 的使用带来麻烦;
b.*PA是错误的,*PA是PA指向存储区域(A)的值,这是一个整数值,没有给A赋值,使用存储在A中的数据作为地址是有问题的,这个指针是一个“百搭”指针;
False,这与 B 的情况相同,A 的值为 *Pa
没错,pa 是指向整数存储的指针,它已被分配给变量 a,输入的整数数据将存储在变量 a 的存储中。
-
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; 更烦人。
-
int a,*pa=&a;这句话可以分解为:
int a;
int *pa;
pa=&a;
scanf 函数获取整数时,需要证书的地址,即 int * 类型,满足 int * 类型的只有 &a 和 pa
因此,选择了 D
-
dscanf 要求提供变量的地址。
那么BC是不对的。
如果要在 A 选项中输入 a,则需要 A 的地址,但 &pa 是 Pa 的地址,所以不是真的。
-
p++ 和 *++p 的区别在于,前者间接地向 p 求助,然后自动递增 p(即,p 指向当前指向该对象的对象之后的对象的地址),而 *++p 先自动递增 p,然后间接地向 p 求助。 如图所示
p--vs. --p 与上述情况类似,不同之处在于它们指向当前指向的对象。 不过,值得注意的是:
指针之间的减法是合法的,而指针之间的加法则不合法,例如:
所以:<>
以下是需要注意的几点:
-
假设 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 变量的存储地址。
-
要了解指针是地址。
-
对于 char*a; ,“”“的优先级高于”*“,等价于*(a),即a是数组,数组元素是char*类型的指针。
--a 优先级是计算 a first,这意味着 a 必须先是一个数组,然后是 *,即数组中的每个元素都是一个指针,称为指针数组。
对于 char*a; ,a 是 char* 类型的指针。
--a) 表示 *a 必须首先是一个指针,并且该指针指向的数据类型是一个数组,称为数组指针。
-
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++)
-
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
-
首先,您需要明确:
数组的名称实际上是一个指针;
p 指示指针 p 指向的值。
然后第一个循环是为数组中的元素赋值。
第二个循环逐个打印数组中的元素。
-
打印“a[i]=*p”数组。 *p 是指针的内容,其前面有一个值。
看看 printf 的打印格式。
-
请注意,在定义指针 p 后,您不会为其赋值 (p=&a),因此 p 的地址值是由系统任意分配的。 也就是说,他没有指向 A。 *p=a;
角色的知识将 a 的值支付给 p 指向的空间值 1。 所以后来 a 更改了并且没有更改 *p 的值。
第一个问题已经回答过了,那就是系统随意分配。 但这样做是危险的,因为你不知道 p 指向哪里。 如果指向对系统很重要的数据,则后续分配可能会使系统崩溃。
因此,我们希望尽量避免这种程序。 否则可能会导致您的计算机出现故障。 使用函数 calloc 或 malloc 是安全的。
-
问题一和问题二可以归结为一个问题,对吧? 您确定输出结构是 2 1 2 吗? 而不是应该在 *p = a 中; 此语句的程序是否用完了?
-
int a, *p;定义一个整数变量,其指针指向整数 a = 1; 为整数变量分配初始值 1
p = a;将 1 分配给指针 p 指向的地址 [此行 ** 有致命错误!! 如果不初始化 p 指向的地址,很容易出现访问非法内存区域的错误
用于将初始值分配给整数指针的方法。
方法一:int*p;
p = (int*)malloc(sizeof(int));
方法二:int *p, a;
p = &a;
-
因为 [ ] 运算符的优先级高于 *,所以我们根据优先级对它进行排序:
第一个 p 与数组中具有 2 个元素的数组组合,然后与 * 组合,表示数组中元素的类型是指针加 int P 是 2 个元素的数组,数组中的元素是指向类型类型的指针。
第二个 p 先和 * 组合(因为有一个 () 改变优先级),表示 p 是一个指针,然后和 [2] 组合表示它指向一个有两个元素的数组,然后和 int 组合,表示数组中的元素是整数。
所以 p 是一个指向两个元素的数组,并且该元素的类型为整数。
-
第一个正确,第二个不正确,应该是指针数组,这是指向整数的两个指针。 可以参考《指针的艺术》,我觉得这本书很不错。
-
楼上错了!!
int *p[2];它是一个指针数组,数组包含指针(数组包含两个指针元素)。
int(*p)[2];是一个数组指针,一个数组指针一个数组指针是指向数组第一个元素地址的指针,它本质上是一个指针;
指针数组是数组的元素是指针的数组,其本质是数组。
你好! 对于您的疑问,我将分开:
一是产品包装(箱)上标明的地址与商标注册证上的地址不一致是否违法。 商标法中没有这样的禁止,只要旧卷足以让消费者识别出你的产品与其他商品的生产者不同。 但这种用法有一个基本前提: >>>More
1.染发膏的品质久了会褪色,好的染发膏的颜色不会太明显; 至于不好的染发膏,你不需要等太久,一个月左右,就会变成发黄似的发色; >>>More
新手学习烹饪的步骤。
1.第一次用手做饭,不要紧张,其实很简单,记住在煮熟的菜的基础上加入相应调味料的要点,注意不要煮糊状。 >>>More
你好! 我觉得荣耀V8还是很不错的,双镜头设计让荣耀V8快速拍出不一样的好**。 双镜头、双传感器和双ISP(图像处理芯片)可以使进入的光量和敏感区域增加一倍。 >>>More