懂C语言的进,指针函数用了最后交换不了数值

作者&投稿:蓝阳 (若有异议请与网页底部的电邮联系)
C语言用函数,指针交换值的问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*k=*a; *a=*b; *b=*k只是把指针指向的内存地址改变了,数据没有改变哦

这个函数的目的是让数组中的数据翻倍啊,p[k][j] *= 2就可以达到这个效果
直接给P?p只是一份拷贝而已,给他没用,况且他还是指针,建议阅读《C和指针》

你的函数传递的是数值而不是指针,所以不会改变a,b的值,函数改成
void swap(int *a,int *b)
{
int t;
t=*a; *a=*b; *b=t;
}

传址和传值,自己书上看看吧!


c语言指针和函数的问题
由上述汇编代码基本上说明了C语言中值传递的原理,只不过传递的是指针的值而已。本文后面还要论述使用引用传递的swap函数。从这些汇编代码分析,这里我们可以得到以下几点: 1. 进程的堆栈存储区是主调函数和被调函数进行通信的主要区域。 2. C语言中参数是从右向左进栈的。 3. 被调函数使用的堆栈区域结构为: 局部...

c语言指针型函数
include<string.h> \/\/ 导入头文件<string.h>#include<stdio.h> \/\/ 导入头文件<stdio.h>char *fun(char *t) \/\/ 定义函数, 名称fun, 输入参数为char *, 返回值为char *{ char *p = t; \/\/ 把t的值赋值给p, 相当于p指向与t相同的字符串 return p + strlen(t) \/ 2...

C语言 int()的括号里还带有指针是什么意思
就是调用函数是传入的参数,const char* 表示常量字符串,比如“hello world”,双指针表示指针的指针,可以用来在调用函数中开辟空间

C语言 指针进阶问题;
3.动态空间的释放,程序中使用指针数组来存储各输入字符串的首地址,在释放这些指针时,需逐个指针进行释放,具体操作见后边的程序 4.函数返回值的设定,建议返回下标,这样方便其它程序对最长字符串进行的可能的其它操作 下边是按照程序要求重写的程序,可以参考,思路是为每个字符串先分配额定的长度,C语言...

向学长提个c语言问题(关于指针和函数)。
呵呵.其实你的理解很正确的.不过 "函数形参是一个局部变量,只在函数内部有用,函数一旦退出,形参就被释放了"这句话只针对变量是正确的.对指针就不正确了..指针你可以直接当做一个地址来看..int *fun(int n){ int *xp;n=n+5;xp=&n;return xp;} 这个函数xp=&n得到的是n这个变量的地址...

C语言实验六实验报告——指针
一、实验项目名称指针二、实验目的1.掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4....

C语言:指针函数跟函数指针的区别
本质的区别是:一个是函数 一个是指针变量 1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表)int *f(x,y);2、函数指针是指向函数的指针变量,即本质是一个指针变量。int (*f) (int x); \/* 声明一个函数指针 *\/ f=func; \/...

C语言常用的函数有哪些
C语言库函数,常用库函数有:1、scanf格式输入函数 2、printf格式输出函数 3、systemdos命令函数 4、sort排序 5、main主函数 6、fgets文件读取字符串函数 7、fputs文件写入字符串函数 8、fscanf文件格式读取函数 9、fprintf文件格式写入函数 10、fopen打开文件函数 11、getchar输入字符函数 12、putchar输出...

我需要 由浅入深学C语言——基础、进阶与必做430题,求分享教材的网盘资...
提取码:1234 内容简介 《由浅入深学C语言基础、进阶与必做430题》是2011年7月1日电子工业出版社出版的图书,作者是崔久。本书第1篇是C语言基础,讲解了C语言的发展历程、特点及C语言程序的编译和链接、顺序结构、条件结构、循环结构;第2篇是C语言技术进阶,包括数组、指针、函数、结构型、共用型...

c语言函数返回字符串时必须要用指针吗?如果返回结构体呢?函数在返回那...
所谓函数类型是指函数返回值的类型。在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数。定义指针型函数的一般形式为:类型说明符 *函数名(形参表){ …… \/*函数体*\/ } 其中函数名之前加了“*”号表明这是一个指针型函数,即返回值是一个指针。类型说明...

岢岚县18720672837: C语言关于调用函数交换2数的问题,请问为什么用了指针才能交换? -
王虞丁硼: 值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出.当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递.指针传递:可以改变指针指向内容的值,但是不能改变指针本身,无需复制开销.你百度一下,值传递,指针传递,可以看到更多的内容.

岢岚县18720672837: c语言 用指针方法处理 输入10个整数,将其中最大的数与第一个数交换, -
王虞丁硼: #include<stdio.h> #define N 10 void input(int number[]) { int i,*p; for ( i=0,p=number;i<N;i++,p++ ) scanf("%d",p); } void swap(int *p1,int *p2) { int k; k=(*p1);(*p1)=(*p2);(*p2)=k; } void max_min(int array[]) { int *pmax,*pmin,i,*p; max=min=p=array; ...

岢岚县18720672837: c语言 交换指针内容 -
王虞丁硼: 一般的做法是无效的,因为产生的是一个临时指针,在函数里改变,到函数外面的时候,原来的指针没变,这样就用指针的指针 void swap(int** p,int** q) { int* temp; temp = *p; *p = *q; *q =temp; } 调用的时候就 int* p,*q; swap(&p,&q);

岢岚县18720672837: C语言编程,要用指针.输入十个数,将最小值与第一个互换,最大值与最后一个互换,输出十个数. -
王虞丁硼: 1234567891011121314151617181920212223242526 intnum[10] = { 2, 3, 4, 5, 6, 7, 8, 9, 0, 1 }; inttemp; int*begin = num; int*end = num + 9;for(int*pointer = begin; pointer <= end; pointer ++) { if(*pointer < *begin) { temp = *pointer; *pointer = *...

岢岚县18720672837: c语言编程,使用指针做为函数参数,编写一个字符串交换函数,实现两个字符串内容的交换 急求,多谢! -
王虞丁硼: 展开全部#include void swap(char *a, char *b){ int ch; while(*a && *b) ch=*a,*a=*b,*b=ch,a++,b++; if(*a){ *b++=*a,*a++='\0'; while(*b++=*a++); } else if(*b){ *a++=*b,*b++='\0'; while(*a++=*b++); } }

岢岚县18720672837: C语言输入10个整数,将其中最小的数和第一个数对换,把最大的数与最后一个数对换.(用指针) -
王虞丁硼: 用指针将数对换的自定义函数为:void swap(int * p, int * q) //p, q是需要对换的两个数的指针 { int t; t=*p; *p=*q; *q=t; }

岢岚县18720672837: C语言指针做函数参数交换两个数,怎么理解,为什么指针就能改变一开始设定的数 -
王虞丁硼: c需要函数参数是拷贝复制的,但指针是地址,指针复制多少次,指向的内存空间是唯一的,所以可以改变设定数.

岢岚县18720672837: C语言指针使用函数交换两个变量的值 -
王虞丁硼: 这个地方会出现不好理解的东西. 调用函数的时候,你放入了int a int b 但是这其实不是你的main函数中的a b只是相当于他们的副本,也就是复制了一个a 和b 传入函数 所以你改变的只是传入的副本 也就是复制的副本a b所以在main函数中打印的ab不会出现变化 依然是a=3,b=6 现在回答第二个问题,怎么会让ab的值变化:传入指针,也就是在main函数中使用a b的指针,然后吧指针传入到函数里面 这个时候ab就会真正的发生变化,因为指针指向的是ab的物理地址,也就是真正的ab,不是副本,这个时候就会改变ab的值.想要理解,可以去百度传值参数和引用参数.纯手打,望采纳

岢岚县18720672837: c语言指针:从键盘输入两个整数给c1,c2两个变量,用函数交换c1和c2的值后输出. -
王虞丁硼: #include<stdio.h> void fun(int *c1,int *c2) { int k; k=*c1; *c1=*c2; *c2=k; } void main() { int c1,c2;scanf("%d%d",&c1,%c2); fun(&c1,&c2); printf("%d %d\n",c1,c2); }

岢岚县18720672837: C语言指针实现数据交换 -
王虞丁硼: void swap(int *x,int *y) x,y是地址 temp = *x; //temp的值是x地址指向的值 这么理解就明白了. int a; int *a2; a = 5; a2=&a; *a2 = 6; 运行到这里a就是等于6,有没有明白呢.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网