C语言学习日志4

  1. 全局变量声明之前加上static,就是静态全局变量。全局变量和静态全局变量都是静态存储的;在存储上无区别。区别在于他们的作用域;全局变量的作用域是整个源程序,当源程序有多个源文件组成时,全局变量在各个源程序文件都是有效的;而静态全局变量怎被限制了作用域,只在定义该变量的源文件内有用在同一程序的其他源文件不能使用!
     还有静态全局变量只初始化一次,防止在其他源文件调用!而全局变量可以再其他源文件初始化
    
  2. 静态局部变量和普通局部变量不同。静态局部变量也是定义在函数内部的,静态局部变量定义时前面要加static关键字来标识,静态局部变量所在的函数在多调用多次时,只有第一次才经历变量定义和初始化,以后多次在调用时不再定义和初始化,而是维持之前上一次调用时执行后这个变量的值。本次接着来使用。
     静态局部变量在第一次函数被调用时创造并初始化,但在函数退出时它不死亡,而是保持其值等待函数下一次被调用。下次调用时不再重新创造和初始化该变量,而是直接用上一次留下的值为基础来进行操作。
     静态局部变量的这种特性,和全局变量非常类似。它们的相同点是都创造和初始化一次,以后调用时值保持上次的不变。不同点在于作用域不同
    

eax 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
ebx 是"基地址"(base)寄存器, 在内存寻址时存放基地址。
ecx 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
edx 则总是被用来放整数除法产生的余数。
4.用法(1)乘法 ab(2)声明 int p(3)指向 p
5.
int main()
{
printf("char
size %d\n",sizeof(char
));
printf(“short* size %d\n”,sizeof(short*));
printf(“int* size %d\n”,sizeof(int*));
printf(“double* size %d\n”,sizeof(double*));
return 0;
}
在这里插入图片描述x64
win32
win32

6.返回多个函数值,使用结构体指针
#include<stdio.h>
#include<math.h>
#include<string.h>

struct Snum
{
int Letnum;
int Dignum;
int Othernum;
};
int main()
{

struct Snum a1;
void Print_Num(struct Snum* p);
Print_Num(&a1);
printf("Lef=%d Dig=%d Other=%d\n", a1.Letnum, a1.Dignum, a1.Othernum);
return 0;

}
void Print_Num(struct Snum*p)
{
int Letnum1 = 0;
int Dignum1 = 0;
int Othernum1 = 0;
char ch = ‘\0’;
do
{
ch = getchar();
if (isalpha(ch))
{
Letnum1++;
}
else if (isdigit(ch))
{
Dignum1++;
}
else
{
Othernum1++;
}
} while (ch != ‘\n’);
//printf(“Lef=%d Dig=%d Other=%d\n”, Letnum, Dignum, Othernum);
p->Letnum=Letnum1;
p->Dignum =Dignum1;
p->Othernum = Othernum1;
return;
}
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值