#include<stdio.h> 关于c语言二级 int k=7,m=5; void f(int **s) { int *t=&k; C语言多级指针问题

作者&投稿:储勤 (若有异议请与网页底部的电邮联系)

传地址的变,传值得不变。

在给a和b分别赋值5,9后,把a的地址1703740给了指针变量pointer_1,把b1703736的地址给了指针变量pointer_2(为了方便,地址用%d输出,不同的PC,情况不同,但是原理都一样)。然后调用函数,把指针存储的值(a、b的地址)传递给P1、P2指针。

在调用函数的进行交换的代码,可以看出,只是单纯的将各自存储的地址进行交换而已。所以,指针变量只是在调用函数里交换了存储的地址,可以在调用函数里输出9,5。但是一旦调用结束,P1、P2指针变量就会被释放。并没有在根本上进行交换。

c语言中三种方法交换两个数的值:

方法一:利用中间变量,以此依托交换两个数的值;

方法二:利用两数之间互相加减,来实现两数的交换;

方法三:利用按位异或^来实现两数的交换,注意两数需转换成二进制比较。

扩展资料

C 语言本质上是传值调用(call by value)的语言,因为函数的形参都是局部变量,它们通过传入的实参进行初始化。

C 语言的优点是,只要表达式的类型适当,就可以当作实参。另一方面,缺点是在启用函数时,如需要复制大数据对象,则运行成本很高。而且,函数没有办法修改原始变量(调用者的变量),只能修改原始变量的复制版本。

然而,如果函数的实参是变量的地址,那么函数就可以通过指针,直接获取该原始变量,并修改原始变量的值。所以,C 语言也提供了传址调用(call by reference)函数。



#include<stdio.h>
int k=7,m=5;
void f(int **s)
{
 int *t=&k; t是一个变量,它的值是k的地址,*t就是k
s=&t; s是一个变量,它的值是t的地址,*s就是t
*s=&m; *s就是t,也就是把m的地址的值赋给t,那么t的值就变成了m的地址
printf("%d,%d,%d,",k,*t,**s);结果是7,7,5
}
main()
{ int i=3,*p=&i,**r=&p;
f(r);r的值传递给s,r和s是分别的2个变量,*r=*s=p,
但是f里面重新修改了s,那么变成了*s=t,没有改动过p,因此r没有变,p也没有变。

面对指针操作的时候,先撇开其类型上的区别,比如上边的s和t,
他们本质都是一个变量,然后记录了一个值,你只需要记录当s=&t时,*s就是t
然后一步步推理,就能分析清楚所有的指针操作,久而久之,熟能生巧。

至于类型上,记住一个关系:s=&t,那么s就该比t多一个*号
如t是int *t,那么s就是int **s


传地址的变,传值得不变

s r值指向同一地址!!!

7,7,7
不变

一二级指针问题#include<stdio.h> int k=7,m=5; void f(int **s) { int *t=&k; s=&t; *s=&m; printf("%d,~

你根本都没有调用f()函数
#includeint k=7,m=5;void f(int **s){ int *t=&k; s=&t; *s=&m; printf("%d,%d,%d,",k,*t,**s);}main(){ int i=3, *p=&i, **r=&p;}

int *t=&k;后t指向k,即t的值是k的地址;
s=&t,后s指向t,而*s=&m;的作用是改变s指向的变量t的值,使t的值等于m的地址,即*s=&m;后t指向m
,所以*t的值是m的值5。

include是什么意思
答:include [英][ɪnˈklu:d][美][ɪnˈklud]vt.包括; 包含; 计入; 包住;第三人称单数:includes过去分词:included现在进行时:including过去式:included 例句:1.Economics curricula need to includ...

include是什么意思?
答:1、include是动词,意为“包括,包含”,侧重指被包含着是整体的一部分,可以在句中充当谓语。例句:(1)、The list include many new names. 这张名单上包含许多新名字。(2)、The book includes two chapters on g...

include是什么意思?
答:"Include"是一个英语单词,意思是包括、包含或包容。在语法上,"include"经常用作及物动词,后面接一个名词或代词,表示将某物包含在另一个物体或范围之内。例如,在一篇文章中,你可能会写道:"The book includes several ...

include怎么读
答:include在英语中读作/ɪnˈkluːd/。一、发音规则 1、发音:include的/i/音是短元音,/n/音是鼻音,/k/音是爆破音,/l/音是清音,/uː/音是长元音,/d/音是浊辅音。二、单词解析 1、"in...

include included including有什么区别 怎么用
答:1、词性不同 include:动词 included:形容词 including:现在分词,常用做介词 2、用法不同 用法如下:1、include:包括、包含;算在内,列在里面;后接名词/代词做宾语,动宾结构做谓语。——My family includes my ...

include什么意思?包含什么词性?
答:include的形容词是:inclusive、included;名词是:inclusion;介词是:including。1、inclusive 英 [ɪn'kluːsɪv] 美 [ɪn'klusɪv]adj. 包括的,包含的 2、included 英 [ɪn'klu...

include, contain有什么区别吗?
答:用法区别:1、include用于虚拟范畴,如我们今天的任务包括...等;v.包括;包含;使成为?的一部分。第三人称单数:includes,现在分词:including;过去式:included;过去分词:included 2、contain多用于客观事物,如容器里有...

include, contain和contain有什么区别?
答:include、consist of 和 contain这三个词语都有“包含”的意思。具体的含义和使用语境是不同的。1、Include (1)Include 的意思是“包括在内,包含 ,其中有”, include 在英语中使用的频率非常高,通常指整体里的一部分...

include是什么意思?
答:include普通用词,指一整体包含着各独立的部分,也指某东西包含另一东西的某一部分。4、例句:The collection includes all the band's British and American hit singles.专辑中收录了该乐队在英国和美国的所有热门单曲。

include是什么意思
答:include的意思是包括; 包含; 使成为…的一部分。include造句:1、Examples include broken paragraphs, blank pages, odd page numbering, and spelling errors.示例包括破坏的段段、空白页、奇怪的页码以及拼写错误。2、That ...