C语言学习的一些细节

一.变量的生命周期和作用域

生命周期:变量的存在时间
作用域:变量的作用范围
变量的这两个属性决定了什么时候以及在什么地方可以使用此变量。

需要注意的是

1.循环内部定义的变量,生命周期为循环开始到结束

int main{
for(int i=1;i<=10;i++)
{     
         printf("%d\n",i);
}
printf("%d",i);//这条语句会报错,使用了没有定义的变量。
return 0;
}

2.static的用法
static 饰局部变量
static修饰局部变量只改变变量的生命周期,而不改
变变量的作用域,它的作用是让局部变量出了作用域依然存在。
static 修饰全局变量
该变量可以在本文件中使用。
static 修饰函数
该函数可以在本文件中使用

3.变量只能被初始化一次,但是可以被多次赋值。

include<stdio.h>
include<windows.h>
void Show()
{static int i=0;//只执行一次
  i++;
  printf("%d\n",i);

}
int main()
{ int i=1;
for(;i<=10;i++)
{  Show();
   Sleep(500);//用来暂隔程序
}
}

因为上述第三条
程序运行结果为 顺序打印1-10;
而不是 打印 十个1;

二.初始化和赋值的区别

初始化是系统在编译时进行的,而赋值是在程序运行时执行。
建议定义变量时要进行初始化。

三.逗号表达式

逗号表达式就是在圆括号中用逗号隔开的表达式。
例如(1,2,3,4,54)
而逗号表达式的值为括号内最右侧的值。

int a=(1,2,3,4,5,6);//结果a的值为6
四.C语言字符串

1.C语言是没有字符串类型的,要使用字符串,可以通过字符数组或者字符指针。
例如

char c[]="ABC";
char *b;
b=c;

2.字符串结束标志’/0’

char a[]={'A','B','C'};
char b[]="ABC";
printf("%d\n",strlen(a));//没有字符串结束标志'\0',输出值不确定
printf("%d\n",strlen(b));//求字符串长度为3

3.sizeof和strlen的区别
.sizeof是运算符,其参数可以是数组、指针、类型、对象、函数等。具体类型sizeof返回值unsigned int如下:

数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。

strlen是函数,其库函数为<string.h>
参数必须是字符型指针, 它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

五.typedef和#define

#define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。
例如:#define
#define LOM 500 //注意, 最后没有分号

typedef是定义了一种类型的新别名,不是简单的字符串替换,所以它比宏(#define)来得稳健。
例如:typedef int IN;
将整形变量int 定义新的名字IN。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值