c语言swap函数出错 c语言的swap函数

c语言问题,不知道为什么s1,s2的值调换不了,求高手指教:

1、C语言的函数形式参数是函数的局部变量,你把实参地址值传给形参指针,在函数中交换只在函数中起作用,影响不到主调函数中实参指针的值。

你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事网站建设、成都网站制作企业网站建设、手机网站制作、网页设计、品牌网站设计、网页制作、做网站、建网站。创新互联建站拥有实力坚强的技术研发团队及素养的视觉设计专才。

2、发现问题:往往生活在世界中,时时刻刻都处在这各种各样的矛盾中,当某些矛盾放映到意识中时,个体才发现他是个问题,并要求设法去解决它。这就是发现问题的阶段。

3、图中的代码交换了两个指针ss2的值。在这里,指针值其实就是指针所指向的字符串在内存中的位置。所以s1指向了“123”,s2指向了“abc”。

我定义的swap函数哪里出问题了(初学者)?

你将temp指针赋初值0,即NULL,意味着temp没有指向有意义的地址,其实指向0X00000000,但是那个地方你不能用,也就是说*temp无法赋值。

swap是C++函数库里里面的一个用来交换2个数的函数,你用这个,系统会自动调用C++函数库里面的函数,而不是你自己写的函数。

void swap(int *p1,int *p2) //函数的作用是将*p1的值与*p2的值交换 { int temp=0; //temp不需要定义成指针,因为它是用来存储p1中的数据的,所以只需要用一个整型变量就可以了。

把地址转变成int也是会把高位截掉的。C语言的参数本身是不能改的。如果参数是地址,可以改变该地址内的值,但是不能改变地址本身。

C语言指针问题。

1、如有定义char y[4]= 321则表达式 *y+2的值是5 。分析:y是字符串数组首元素3的地址,*y的值就是字符3,再加上2,就是字符5(也可以说是字符5的ASC码值)。

2、问题是这里实参和形参是传值,所以不会改变。调用test是只是把实参str指向的地址NULL传给形参string, 在函数里string通过赋值指向新的地址常量,这个过程跟str没有关系,不会改变。

3、P指向a存值的地址,如p指向地址的内存的值为0001,则*p=0001(为1),这时修改*p=0010,则a的值相应的被修改为2。

4、A:char *a说明*a是一个字符,而china是一个字符串,因此赋值错了。

5、D p是指针数组,每个元素都是指针,其中D就是对的 p[0]是指针,&a[0]也是指针(地址) D p[3]指向10, 所以再往后数两个p[3][2]是12 B argc是参数个数,test 和 hello 。


分享名称:c语言swap函数出错 c语言的swap函数
文章路径:http://scjbc.cn/article/depsooe.html

其他资讯