C语言第4次上课随堂笔记

EOF是文件的结束标志,写全为end of file,即文件的结束标志,

在scanf语句中,读取失败的时候会返回EOF,如果读取正常,返回的是读取到的数据个数

int ret=scanf("%d",&a);
printf("ret=%d",ret);//输入100,这里输出的是1

可以用于多组数据输入!!!!

while(scanf("%d",&score)!=EOF)

register-寄存器

register int a=10;//只是建议放入寄存器,放不放在于编译器,在当下其实意义并不大

在计算机上数据可以存储在哪里??寄存器、高速缓存、内存、硬盘。

寄存器:字节。高速缓存:xxM。内存:8G/16G。硬盘:500G。网盘:2T。

关键字typedef

typedef unsigned int uint;

int main()
{
    unsigned int age;
    uint age2;//作用类似于取别名
    return 0;
}

关键字static-静态的

三种用法:修饰局部变量、修饰全局变量、修饰函数。

void test()
{
    int a=0;
    a++;
    printf("%d\n",a);

}
int main()
{
    int i =0;
    while(i<10)
    {
        test();
        i++
    }
    return 0;
}//会打印10个1。
void test()
{
    static int a=0;
    a++;
    printf("%d\n",a);

}
int main()
{
    int i =0;
    while(i<10)
    {
        test();
        i++
    }
    return 0;
}//会打印1~10。

栈区:局部变量、函数参数、临时的变量(进入作用域创建,出了作用域释放,比如上面函数作用域里的a,就是出了作用域就被销毁的,返回作用域的时候又给了它一个初值0)

堆区:动态内存分配,malloc,realloc,calloc,free

静态区:静态变量、全局变量(放在静态区的数据创建后,直到程序结束才释放)

总结:普通的局部变量是放在栈区上的,这种局部变量进入作用域创建,出了作用域释放。但是局部变量被static修饰后,这种变量就放在了静态区,放在静态区的变量,创建好后,直到程序结束才释放。本质上:static的修饰改变了局部变量的存储位置,因为存储位置的差异,使得执行结构不一样。注意:被static修饰不影响作用域,但是生命周期变长了

全局变量本身是具有外部链接属性的,在A文件中定义的变量,在B文件中可以通过【链接】使用,但是如果全局变量被static修饰,这个外部链接属性就变成了内部链接属性,使得全局变量的作用域变小,这个全局变量只能在自己所在的源文件内部使用。

修饰函数:

int Add(int x,int y)
{
    return x + y;
}
extern int Add(int,int)//声明外部函数

int main()
{
    int a =10;
    int b =20;
    int c =Add(a,b);
    printf("%d\n",c)
    return 0;
}
static int Add(int x,int y)
{
    return x + y;
}

函数本身是有外部链接属性的,被static修饰后外部链接属性就变成了内部链接属性,使其作用域变小(与上面的全局变量类似)

指针:1.指针就是地址。2.口头语中,指针一般指的是指针变量。一个指针变量的大小取决于它存的地址,在32位机器上是32个bit位,指针变量存放的是32bit位地址,大小是四个字节!

解引用操作:*pa-作用就是通过pa中的地址,找到a,*pa就是a。

int a = 1;
int* pa=&a;//类型是int*,pa是变量名
*pa = 20;
int main()
{
	int a = 10;
	int* p = &a;
	printf("%zd\n", sizeof(p));
	return 0;

}

注意:%zd专门用来返回sizeof返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值