Q1:变量在不同的操作数机器上大小不同吗?
32位编译器: char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
Q2:何为实参,何为形参,两者间有什么关系?
A:首先关于变量的作用范围做个简单的说明,任何函数定义的变量只能自己使用,函数与函数之间是平行的。当函数体内部函数与外部函数相重复时,函数内部的函数覆盖外部函数变量,但是只在函数体内部有用。此外当外部变量定义在函数体之后,而且又在函数内部没有定义的话,那么这个变量在这个函数是无意义的。
那么我们怎么理解形参和实参之间的关系
main( )
{ int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("max is %d",c);
}
max(int x,int y) /*定义有参函数max*/
{ int z;
z=x>y?x:y;
return(z);
}
{ int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("max is %d",c);
}
max(int x,int y) /*定义有参函数max*/
{ int z;
z=x>y?x:y;
return(z);
}
以此函数为例。变量x y即为形参 实参 是a b 。x y参数只是完成了解释这个函数的作用,而真正的我们用到的最后输出的参数是a b所以 a b是实参
Q3:static修饰后的局部变量,在作用上有什么区别?
首先,被static定义的变量,无法被其他程序调用,在别的函数中有重名的变量也没有问题,其次 static定义的函数,在被调用的时候,他只会被初始化一次 这个是重点。其生存周期,存储空间都发生了变化,但是它作用的范围是没有任何变化的。