1、static修饰局部变量时,局部变量的生命周期变长:
void test()
{
static int a = 1;
a++;
printf("%d\n", a);
}
int main()
{
int i = 0;
while(i < 5)
{
test();
i++;
}
return 0;
} //在此例中,打印的应该是2,3,4,5,6;相当于a在test()函数
//中只被赋值了一次并且值被保留了下来
static修饰全局变量时会使其作用域变小,使变量只能在所定义的原文件中使用,extern关键字此时是失效的。
2、而static关键字修饰函数时如同修饰全局变量一样,会改变函数的链接属性,即外链变成内链,不能被extern作用。
3、typedef用来定义已经存在类型的别名,如:
typedef unsigned int uint;
此后语句uint var = 2 等价于unsigned int var = 2.
4、指针用来存放变量地址,目前还不知道有什么具体应用,到后面应该会慢慢了解。指针的类型应该与定义变量的类型一致。指针目前所了解使用方法如下:
int main()
{
char var = 1;
char* p = &var;
*p = 20;
printf("%d\n", var);
return 0;
} //要注意的是定义指针p时,char* p和char *p两种写法都是可以的
//但是为了避免引起混淆,平时定义指针时就写成char* p。
//在此例中,p的值为变量var的地址,“ * ”称为解引用符,用来取p
//的值即变量var的地址所指的内容,括号中第三行已经使用解引用符
//将p所指的内容即var的值改成了20,所以打印出的var的值是20而
//不是1
5、指针大小在32位 *** 作系统中是4字节,在64位 *** 作系统中是8字节。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)