`

C语言之数组和结构体参数

阅读更多

数组Array

结构体Struct

 

 

学习C语言,基本类型(Primitive Type)看完了就差不多到 数组和结构体来。

作为C语言中最基本最常见的复合类型(Compound Type),两者作为参数传递时所完全不一样的。

 

数组的名字本来就是指针,所以方法里面修改数组元素能影响传递进来的数组。两者地址也一样。

结构体传进方法时,是复制的一个副本。两者地址不一样。

 

#include <stdio.h>
void changeArray(int x[])
{
	x[0] =  900;
	x[1] =  800;

printf("array address in method=%d\n",x);
}

int main(void)
{
	int arr[2] ;
	arr[0] =  0;
	arr[1] =  0;
printf("arr[0] before =%d\n",arr[0]);
printf("arr[1] before=%d\n",arr[1]);
	changeArray(arr);

printf("\n------------------------------------");
printf("\n");
printf("arr[0] after=%d\n",arr[0]);
printf("arr[1] after=%d\n",arr[1]);

printf("array address after=%d\n",arr);
return 0;

}
 
depeng@depeng-ubuntu:~/c$ ./Array
arr[0] before =0
arr[1] before=0
array address in method=-1077467192
------------------------------------
arr[0] after=900
arr[1] after=800
array address after=-1077467192

 

 

#include <stdio.h>

struct complex_struct { double x, y; };

void changeStruct(struct complex_struct  s){
   s.x=900;
   s.y=800;
 printf("\n");
   printf("\n--------<in method>----------------------------");
   printf("\n");
   printf("s  in method=%d\n", s); 
   printf("&s  in method=%d\n", &s); 
   printf("\n--------</in method>----------------------------");

}

int main(void)
{
	struct complex_struct  z;
	z.x = 0.0;
	z.y = 0.0;
 printf("\n");
   printf("\n----------<before>--------------------------");
   printf("\n");
   printf("z=%f     %f\n", z.x, z.y);
   printf("z before=%d\n", z); 
   printf("&z  before=%d\n", &z); 
   printf("\n------------</before>------------------------");

       changeStruct(z);
 printf("\n");
   printf("\n------------</after>------------------------");
printf("\n");
   printf("z=%f     %f\n", z.x, z.y);
   printf("z  after=%d\n", z); 
   printf("&z  after=%d\n", &z); 
   printf("\n------------</after>------------------------");
   printf("\n");
	return 0;
}

 

----------<before>--------------------------
z=0.000000     0.000000
z before=0
&z  before=-1076121216

------------</before>------------------------

--------<in method>----------------------------
s  in method=0
&s  in method=-1076121248

--------</in method>----------------------------

------------</after>------------------------
z=0.000000     0.000000
z  after=0
&z  after=-1076121216

------------</after>------------------------

 



 

 

 

  • 大小: 1.2 MB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics