数组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>------------------------


1105

被折叠的 条评论
为什么被折叠?



