什么是指针的指针?c语言,指向指针的指针

本文目录
- 什么是指针的指针
- c语言,指向指针的指针
- 指针和指针的指针还有指针的引用的作用分别是什么啊
- C语言指针指向指针的指针
- c语言指向指针的指针变量怎么用++
- C语言中指向指针的指针怎么理解
- C语言中指向指针的指针是什么意思
- 在c语言中指针的指针是什么意思
- 指针的指针是什么
- C语言编程:用指向指针的指针的方法对n个整数排序并输出
什么是指针的指针
指针的指针就是指向一个指针的指针,指针存储的是数据的地址,指针的指针存储的是一个指针的地址
因此p=*pp 注意这个等号不是赋值号,p和*pp是等价的
c语言,指向指针的指针
如果每次自增都加4,那为什么会写成p1++而不是p1+=4呢?+1和+4的过程会让人很容易混乱。
最好弄清楚一点:+1是对人的(c语言代码是让人看的),+4是对机器的。同理,在判断10的时候,应该确实是10(对人来说是10个int),而不是40(对机器来说是40个内存单元)。
指针和指针的指针还有指针的引用的作用分别是什么啊
指针 就是一个地址,不过是带类型的。 比如int *p, p里面存的是一个地址,*p是一个int型。
你可以认为指针就是一个门牌号,可以找到对应的东西。
指针的指针,其实还是指针。只不过指向内存区域里面存的类型有些特殊,是另外一个指针。
想简单一些,和其他的没什么区别。
指针的引用,就是一个指针变量的别名。 和单纯的指针,没任何区别。
C语言指针指向指针的指针
先纠正你的错误:
你的输出中,“p1的值是3”应该改成“p1指向的变量的值是3”也就是“a是3”;
“p1地址是012FF718”应该改成“p1值是012FF718”
然后回答问题:
p1=p;这一句,p1的值和p一样,并不是p1指向p;p1和p都指向a了。
可能帮助你理解的其他话:
p1是个变量,其类型是指向整形的指针,你赋值给他是a的地址012FF718
p1和最开始的p一样,指向a
也就是说,a变量的地址是012FF718
而p1的值就是012FF718,后续你没有更改p1的值,所以p1的值一直是012FF718,一直指向变量a
c语言指向指针的指针变量怎么用++
C语言中有两种非常有用的运算符++和--,分别称为递增和递减运算符,对变量执行加1或减1操作,且运算结果仍赋给该变量。递增、递减运算符和负号一样都是单目运算符,统称单项算术运算符。
指针变量本身储存的是物理地址。使用*运算符可以取得该物理地址对应的值。连续使用两个*,就可以操作指向指针的指针变量。
例如:
printf(“%d“,(*(*p1))++);
printf(“%d“,++(*(*p2)));
C语言中指向指针的指针怎么理解
指针可以理解为一个存地址的寄存器,存的就是地址,“指向指针的指针” 就是二级指针
假设另一个指针是int *q; 而q的指针就是 &q,
p = &q;
作用为了获取这个地址。
C语言中指向指针的指针是什么意思
指针其实也是个变量(只要是变量就一定有相应的内存空间) 只是这个变量比较的特殊
它只能存放别的变量的地址 变量时在内存中是有地址的
你要明确两概念:变量值和变量地址
变量值:是变量本身的内容
变量地址:是该变量在内存中的位置编号
通俗来讲就是说这个变量fp只能接受一个指针变量的地址所以你看第8行在p前面加了一个’&‘取地址符号 也就是说把p这个变量的地址给了fp了fp的内容就是p的地址
1.接下来9行输出了a的值这个直接通过变量名a就能找到该变量的地址并且直接输出了a的值1
2.第10行你会发现输出列表参数里面是*p是什么意思?其中的“*”在这里表示指针运算符, 就是说以p的内容为地址找到该地址里面的值 p里面不是村的a变量的地址吗不是吗? 你看第7行是不是在a变量前面加了“&”取地址运算符了 所以*p就是1
3.第11行**fp 这里出现了2个‘*’号 别急 由于指针运算符的结合方向为“自右至左”所以*fp先运算那么*fp是什么就是一fp的内容为地址找到的变量的值是什么 fp里面存放着p的地址 显然此时*fp最终变成了p这个变量的地址了
4.*(p变量的地址) 到了这一步就是说以p的内容为地址找到对应的变量了 显然是a这个变量了
第11就是你说的指向指针的指针了。
在c语言中指针的指针是什么意思
我们知道变量在计算机内是占有一块存贮区域的,变量的值就存放在这块区域之中,
在计算机内部,
通过访问或修改这块区域的内容来访问或修改相应的变量。turbo
c语言中,
对于变量的访问形式之一,就是先求出变量的地址,然后再通过地址对它进行访问,这就是这里所要论述的指针及其指针变量。
所谓变量的指针,
实际上指变量的地址。变量的地址虽然在形式上好象类似于整数,
但在概念上不同于以前介绍过的整数,
它属于一种新的数据类型,
即指针类型。turbo
c中,
一般用指针来指明这样一个表达式&x的类型,而用地址作为它的值,也就是说,
若x为一整型变量,
则表达式&x的类型是指向整数的指针,而它的值是变量x的地址。同样,
若double
d;则&d的类型是指向以精度数d的指针,而&d的值是双精度变量d的地址。所以,
指针和地址是用来叙述一个对象的两个方面。虽然&x、&d的值分别是整型变量x和双精度变量d的地址,
但&x、&d的类型是不同的,
一个是指向整型变量x的指针,
而另一个则是指向双精度变量d的指针。在习惯上,很多情况下指针和地址这两个术语混用了。
我们可以用下述方法来定义一个指针类型的变量。
int
*ip;
首先说明了它是一指针类型的变量,注意在定义中不要漏写符号*,否则它为一般的整型变量了。另外,在定义中的int
表示该指针变量为指向整型数的指针类型的变量,
有时也可称ip为指向整数的指针。ip是一个变量,
它专门存放整型变量的地址。
指针变量的一般定义为:
类型标识符
*标识符;
其中标识符是指针变量的名字,
标识符前加了*号,表示该变量是指针变量,
而最前面的类型标识符表示该指针变量所指向的变量的类型。一个指针变量只能指向同一种类型的变量,
也就是讲,
我们不能定义一个指针变量,
既能指向一整型变量又能指向双精度变量。
指针变量在定义中允许带初始化项。如:
int
i,
*ip=&i
注意,
这里是用&i对ip初始化,
而不是对*ip初始化。和一般变量一样,对于外部或静态指针变量在定义中若不带初始化项,
指针变量被初始化为null,
它的值为0。turbo
c中规定,
当指针值为零时,
指针不指向任何有效数据,
有时也称指针为空指针。因此,
当调用一个要返回指针的函数时(以后会讲到),
常使用返回值为null来指示函数调用中某些错误情况的发生。
指针的指针是什么
指针
在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。
面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。
在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。
指针与C语言
大家都认为,c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。
因此,说指针是c语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。
basic不支持指针,在此不论。其实,pascal语言本身也是支持指针的。
从最初的pascal发展至今的object pascal,可以说在指针运用上,丝毫不会逊色于c语言的指针。
C语言编程:用指向指针的指针的方法对n个整数排序并输出
用指向指针的指针的方法对n个整数排序并输出的具体编程步骤如下:
1、编写头函数:#include 《stdio.h》。
2、编写条件函数:
void sort(int **p,int n)
{
int i,j,temp;
for(i=0;i《n-1;i++)
for(j=0;j《n-1-i;j++)
{
if(*p[j]》*p[j+1])//或者是*(*(p+j))》*(*(p+j+1))
{
temp=*p[j];
*p[j]=*p[j+1];
*p[j+1]=temp;
}
}
}
3、最后编写主函数:
int main()
{
void sort(int **,int );
int i,n,data,**p,*pstr;
scanf(“%d“,&n);
for(i=0;i《n;i++)
pstr[i]=&data[i];
for(i=0;i《n;i++)
scanf(“%d“,pstr[i]);
p=pstr;
sort(p,n);
for(i=0;i《n;i++)
printf(“%d “,*pstr[i]);
return 0;
}

更多文章:
another time(another time和other time的区别)
2026年10月11日 05:00









