通过栈帧来解释实参到形参的“似的单向传递”

1.目的是在函数中改变数组的内容(数组的内容成功交换)

#include <stdio.h>
#include <string.h>
int main()
{
  void Sort ( char* name [], int n);
  void print ( char* name [], int n);
  char * name [] = { "Follow me" , "BASIC", "Great Wall", "FORTRAN" ,"Computer design" };
  int n = 5 ;
  Sort (name , n );
  print (name , n);          
  return 0 ;
}
void Sort( char *name1 [], int n )
{
  int i = 0 ;
  int j = 0 ;                                                                  
  char * temp ;
  for ( i = 0; i < n - 1; i ++)
  for ( j = 0; j < ( n -1 - i ); j++)
  if ( strcmp (name1 [ j], name1[ j + 1])> 0 )
  {
  temp = name1[ j ];
  name1 [j ] = name1[ j + 1];
  name1 [j + 1 ] = temp ;
  }
}
void print( char *name1 [], int n )
{
  int i = 0 ;
  for ( i = 0; i < n ; i ++)
  {
  printf ("%s" , name1[ i ]);
  printf ("\n" );
  }
}

2.目的是通过交换指针的值来交换a,b的值。(a,b的值无法交换)
#include <stdio.h>
void swap( int * point1 , int * point2 )
{
  int * pt =NULL ;
  pt = point1;
  point1 = point2;
  point2 = pt;
}
int main()
{
  int a = 3 ;

  int b = 7 ;
  int * p1 = &a ;
  int * p2 = &b ;
  swap (p1 , p2);
  printf ("%d%d" , a, b );
  return 0 ;
}

3.目的是通过交换指针所指对象来交换a,b的值(a,b的值成功交换)
#include <stdio.h>
void swap( int * point1 , int * point2 )
{
  int temp =0 ;
   temp = *point1;
  *point1 = *point2;
  *point2 = temp;
}
int main()
{
  int a = 3 ;

  int b = 7 ;
  int * p1 = &a ;
  int * p2 = &b ;
  swap (p1 , p2);
  printf ("%d%d" , a, b );
  return 0 ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值