一个变量的 *** 称为该变量的指针,怎么定义一个指针变量

牵着乌龟去散步 地址 20

其实一个变量的 *** 称为该变量的指针的问题并不复杂,但是又很多的朋友都不太了解怎么定义一个指针变量,因此呢,今天小编就来为大家分享一个变量的 *** 称为该变量的指针的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

  1. c语言里,如何把指针变量的 *** 赋给一个变量
  2. 可以把指针理解为定义 *** 的数据类型吗
  3. 判断:指针变量就是存放变量 *** 的变量
  4. 指针就是 *** 吗,指针变量难道不是 ***
  5. C语言里面的 *** 是什么意思,指针指向一个变量的 ***
  6. 变量的指针,其含义是指该变量的什么

一、c语言里,如何把指针变量的 *** 赋给一个变量

1、因为int*p;应该看成int* p,是指定义一个指向int*类型的名字叫做P的数据

2、q=&p是错误的,因为q是int*的指针数据,p也是,这个赋值 *** 作两边类型不一致

3、int a=p;*q=a;同上,a=p是什么意思,两边类型不一致,p是指针,a是整形数据应该写成int a=*p;

4、我想应该是这样的,不信的话更好是举个例子到编译上试试,建议看本书《c和指针》

二、可以把指针理解为定义 *** 的数据类型吗

在C语言中,定义一个普通的变量(如整型数),我们这样做:int i;而定义一个指针变量(指针)我们需要这样做:int*p;还记得吗,一个矩形中的值是有类型的,可能是整型,可能是字符型……,它们原本是“清白”的,无类型的,是我们通过一些手段使它们有了类型。当我们做出int i;这样一个定义时,编译器就会分配一个 *** (例如200)并和i关联起来,而int将限定编译器把这个区域中的内容作为整型数看待。

现在我们又有了int*p;这个定义,假设p是指向变量i的(见下图),p中存的是变量i的 *** 。*表示p是一个指针,而int表示p中所存的 *** 对应的变量(即变量i)的类型是int。

p指向i, int*p;中的int是指针p所指向的变量的类型

我们将int称为指针p的基类型,或指针p所指向的变量的类型。

类似地,我们可以有: char*s;( s是指向char型变量的指针)

float*f;( f是指向float型变量的指针)

double*d;( d是指向double型变量的指针)

由此得到声明一个指针变量(指针)的一般形式:基类型*指针名;

有一点要注意,在定义指针时,以下两种方式都是允许的,例如:

但一般比较倾向用之一种,因为可以避免以下的误解:

这样的定义方式,容易使人误以为ptr2也是一个指针,事实上并不是,prt2是一个int型变量,以下的定义方式中ptr1与ptr2才都是指针:

.&(address-of operator)取 *** *** 作符:

究竟如何使一个指针指向一个变量呢?后面的语句给出了解答:int*p=&i;&用于取一个对象的 *** (本文说的对象是泛指的某一事物,如变量,数组等,和C++中的对象概念不同),这里用于将i的 *** 赋给p,那么指针p就指向了变量i。上述的语句也可以分开写,如:int*p; p=&i;

小扩展:(下面大括号中的内容,出涉指针的朋友可以跳过,当然也可以作为扩展知识)

{&的实质:当对一个T类型对象进行& *** 作时,返回的是一个“指向T的指针”类型的常量,即指针常量(pointer constant),在我们使用&运算符时我们并不关心它是如何实现的,因为有编译器帮我们隐藏了这些细节。

可当我们想要对一个指针赋一个绝对 *** 的时候,这个问题就体现出来了,而且我们不得不去关注,在C语言中没有一种内建(built-in)的 *** 去表示指针常量,所以当我们使用它的时候通常先写成整型常量的形式,然后再通过强制类型转换把它转换成相应的类型,如:int*, double*, char*等。所以后面所示的做法是不行的: int*p= 0x12345678;正确的方式应为:int*p=(int*) 0x12345678;也许大家还记得我在之一讲中说的要注意指针中只能存放 *** ,不能将一个非0值整型常量表达式或者其他非 *** 类型的数据赋给一个指针,原因就在此。在大多数计算机中,内存 *** 确实是以无符号整型数来表示的,而且多以16进制表示,但我们在C语言中不能用整型数去表示 *** ,只能用指针常量来表示,因为它是被用来赋给一个指针的。

对于这个赋值问题还可以换一个角度去理解,在C语言中,使用赋值 *** 作符时,赋值 *** 作符左边和右边的表达式类型应该是相同的,如果不是,赋值 *** 作符将试图把右边表达式的值转换为左边的类型。所以如果写出int*p= 0x12345678;这条语句编译器会报错:'=': cannot convert from' const int' to' int*',因为赋值 *** 作符左边和右边的表达式的类型应该相同,而0x12345678是int型常量,p是一个指向int型的指针,两者类型不同,所以正确的方式是:int*p=(int*) 0x12345678;}

.*(Dereference operator)解引用 *** 作符

*在定义时用来说明一个变量是指针,而在定义了一个指针之后,我们使用(引用)指针时,*p表示的是p所指向的对象(即i)。也就是说,对于一个已定义的指针使用* *** 作符,将访问这个指针所指向的对象,我们来看下面的程序:

(logical,logical,)参数说明:Logical,Logical,Logical……

三、判断:指针变量就是存放变量 *** 的变量

1、这是正确的。先看一下解释吧,变量的指针就是变量的 *** 。存放变量 *** 的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的 *** 或称为某变量的指针。

2、可能有些难以理解,再附一段程序,

3、 printf("thepointerpaddress%x\n",p);

一个变量的地址称为该变量的指针,怎么定义一个指针变量-第1张图片-

4、 printf("thepointerpvalue%d\n",*p);

5、}

下面是运行结果,可以看到之一行输出了指针数据p,也就是变量a的 *** 。采用十六进制显示。第二行输出了目标标量a的值,也就是10。这里用存取内容运算符'*'对目标变量a读写数据。

6、下面是运行结果,可以看到之一行输出了指针数据p,也就是变量a的 *** 。采用十六进制显示。第二行输出了目标标量a的值,也就是10。这里用存取内容运算符'*'对目标变量a读写数据。

7、解释的不知道能不能懂,可以自己多看一些别的书,可能有更好的解释吧

四、指针就是 *** 吗,指针变量难道不是 ***

指针就是 *** , *** 就是指针;指针变量是一个变量,它保存了基本类型变量的 *** 。

如果指针变量p保存了变量a的 *** ,那么称作p指向了a,*p就是变量a。

如果p是一个指针变量,*p表示了以 p的内容为 *** 的变量,就是p指向的变量。

可以这样来理解指针:指针是一种特殊的语言机制,它存放的是其它变量的 *** ,并且可以通过解引用 *** 作符*,来获取该 *** 的内容。这也造成了一种指向的关系。

各变量的类型推导,foo_p是指针,且指向int,故foo_p的类型是int*,也就是在'*'前添加int;foo_pp也是指针,且指向foo_p,故foo_pp的类型是int**,也就是在'*'前添加int*。

可以用赋值语句使一个指针变量得到另一个变量的 *** ,从而使它指向该变量。比如:

这样就将变量 i的 *** 放到了指针变量 j中,通过 i的 *** ,j就能找到 i中的数据,所以 j就“指向”了变量 i。其中&是“取 *** 运算符”,与 scanf中的&是一样的概念;*为“指针运算符”,功能是取其内部所存变量 *** 所指向变量中的内容。

因为 j是定义成指针型变量,所以 j中只能存放变量的 *** ,所以变量i前一定要加&。需要注意的是,指针变量中只能存放 *** ,不要将一个整数或任何其他非 *** 类型的数据赋给一个指针变量。

1、j不是 i,i也不是 j。修改j的值不会影响i的值,修改 i的值也不会影响 j的值。j是变量 i的 *** ,而 i是变量 i里面的数据。一个是“内存单元的 *** ”,另一个是“内存单元的内容”。

2、定义指针变量时的“*j”和程序中用到的“*j”含义不同。定义指针变量时的“*j”只是一个声明,此时的“*”仅表示该变量是一个指针变量,并没有其他含义。

而且此时该指针变量并未指向任何一个变量,至于具体指向哪个变量要在程序中指定,即给指针变量初始化。而当指定 j指向变量 i之后,*j就完全等同于 i了,可以相互替换。

五、C语言里面的 *** 是什么意思,指针指向一个变量的 ***

C语言里面的 *** 实际上就是一个内存单元的编号,计算机一般是以一个字节为最小的存储单元的,每个字节就给它编一个编号,这个编号就是这个字节的 *** ,这个编号也就是 *** 是具有唯一 *** 的。指针指向一个变量的 *** ,这个类似于,通过知道房间号就可以确定这个房间的具 *** 置是一样的道理,这个房间编号就是房间的 *** 。

六、变量的指针,其含义是指该变量的什么

1、变量的指针,其含义是指该变量的 *** 。

2、存放 *** 的变量称为指针变量,指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的 *** 。

3、举例:int a= 68, *** 为变量a分配的首 *** 为0X065FDF4H,声明空指针long*p= NULL,p=&a是存放变量a *** 的指针变量,即p=&a中存放的值为0x065FDF4H(a的值为68,&a的值为0x065FDF4H)。

4、一是直接按 *** 0x065FDF4H找到a的存储单元,从而对变量a进行访问;

5、二是按 *** 为p=&a分配的 *** 先找到p=&a,然后根据p,&a的值(即变量a *** 0x065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。

6、对于前一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。如果一个指针变量存放的是某个对象的 *** ,则称这个指针变量指向该对象。在C++程序设计中,指针变量只有确定了指向才有意义。

文章分享结束,一个变量的 *** 称为该变量的指针和怎么定义一个指针变量的 *** 你都知道了吗?欢迎再次光临本站哦!

标签: 变量 指针 一个 称为 定义

抱歉,评论功能暂时关闭!