指针变量里面存的什么,指针变量用于存储什么
c语言中变量的指针,其含义是指变量的什么?
指针变量是有加减运算的,但是要注意以下几点:
1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址。指针变量可以加减,但是只能与整型数据加减,此时加减的含义并不是其地址值进行了加减,也就是说如果指针变量p的值是0x20000000,那么p=p+2;的值并不是0x20000002,并不是地址值的简单相加,那么地址值加减多少是与指针指向的数据类型相关联的,如果在32位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后,p的地址值变成0x20000008,也就说实际上地址值加了多少呢:sizeof(int)*2这么多。说明白点,我们加减的数字是以指针指向的数据类型为量度的,p+2表示p在内存中前移两个int的距离,如果p不是int类型,而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理。
2.指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),例如对于int类型的指针p和p1.p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。指针变量的自加和自减实际上是与整数1的加减运算。
3.指针之间可以比较大小。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义。指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。
指针的存储类型是指针变量本身的存储类型
指针的存储类型是指针变量本身的存储类型。指针说明时指定的数据类型不是指针变量本身的数据类型,而是指针目标的数据类型。
在计算机内存中,每一个字节,都有一个编号,称为地址。程序打印出的是起始地址,连续存储。内存单元的地址成为指针,专门用来存放地址的变量,称为指针变量。指针一般形式:存储类型数据类型指针变量名。
指针介绍
指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同。
所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。指针描述了数据在内存中的位置,标示了一个占据存储空间的实体,在这一段空间起始位置的相对距离值。在C/C++语言中,指针一般被认为是指针变量。
以上内容参考:百度百科——指针
C语言中指针变量只能存储地址?
指针变量是一个变量,它保存的是另一个变量的内存地址。你如果知道了这个指针变量保存的值,就可以知道它所指向变量的内存地址,于是就可以间接访问到那一个变量。
定义:指针变量类型
*指针变量名1,
*指针变量名2,
...
;
例如:
int
main(void)
{
int
*p;
/*定义*/
int
a;
p
=
a;
/*把a的地址赋值到p中*/
*p
=
1;
/*间接访问a*/
return
0;
}
把指针作为函数的参数传递,可以使函数可以访问函数外部的变量,例如:
void
swap(int
*a,
int
*b)
{
int
c;
c
=
*a;
*a
=
*b,
*b
=
c;
}
指针也可以用于传递数组,数组名本身就是一个指针:
void
func(int
a[],
int
n)
{
.....
}
指针还可以指向指针,指向结构体(struct),指向数组
int
**p;
/*指向int指针*/
struct
xxx
*p;
int
(*p)[100];
/*指向一个int[100]数组,括号不可少*/
C语言,指针变量存在内存的什么地方
我认为指针变量就在代码中。
c语言的变量值是通过该变量的内存地址寻址得到的,而对于一个已经编译好的程序,变量的地址都是确定的值,不可以更改。这是因为程序在编译时编译器已经通过语法分析把指针变量的地址值计算出来了,所以指针变量实际上不用保存在内存堆栈或数据段中,而是包含在汇编代码里面。
而普通变量在数据段中
至于堆栈那是用来保存上下文、进程切换、以及传递参数的。