初识c语言

1.数据类型 char 1字节;short 2字节;int 4字节;long 4字节;long long 8字节;float 4字节;double 8字节;

2.编译器默认一个小数为double类型

3.局部变量:在{ }内定义的变量 全局变量:在{ }外定义的变量,局部变量和全局变量同名时,局部变量优先使用

4.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束

全局变量的生命周期是:整个工程

5.常量:字面常量        如:100,整形字面值 ‘w’,字符字面值,3.14浮点型的字面值;‘abcdef’字符串常量

               #define定义的标识符常量

               const修饰的常变量 const int a; a本质上还是一个变量,但是具有常属性,不能被修改大小,不能用来指定数组的大小。C99中引入变长数组的概念,变长数组的大小是可以用变量来指定的,但是数组不能初始化.

               枚举常量 enum sex{

male;//默认为0 famale;//默认为1secret;//默认为2;

}

enum sex x=famle;

6.字符串 字符串的结束标志是一个\0的转义字符,在计算字符串长度时\0是结束标志,不算作字符串内容

char arr[]={'a','b','c'}; printf("%s",arr);由于找不到\0这个结束标志%s-打印字符串直到0不打印

int len=strlen(arr);

strlen在求字符串长度时,统计的是\0之前出现的字符的个数

7.转义字符 \?在书写连续多个问号时使用,防止他们被解析成三字母词

\' 用于表示字符常量'

\''用于表示一个字符串内部的双引号

\\用于表示一个反斜杠,防止它被解释为一个转义序列符

\a警告字符,蜂鸣

\b退格符

\f进纸符

\n换行

\r回车

\t水平制表符

\v垂直制表符

\ddd ddd表示1~3个八进制数字。如:\130X 把八进制的130转化为十进制88,88ASCII码值的字符

\xdd dd表示2个十六进制数字。如:\X30 O 把十六进制的30转化为十进制所对应的ASCII码值的字符

printf("%d\n",strlen("c:\test\628\test.c"));

\t,\62被解析成一个转义字符,因为\ddd中ddd为八进制数字0~7。

8.scanf读取数据,如果正常返回的话,返回的是读取到的数据的个数,如果读取失败,返回的是EOF end of file

9.0-数字0-0

'0'-字符0-ASCII码值为48

'\0'-转义字符-ASCII码值为0

不完全初始化默认被初始化为'\0'

%默认6位

10.%取模-得到的是余数,只能用于整数。

除法的操作符两端如果都是整数,执行的是整数除法

只要有一个是浮点数,执行的是浮点数的除法

11.单目操作符 !逻辑反操作

-负值 +正值 &取地址 sizeof操作数的类型长度(以字节为单位)~对一个数的二进制按位取反

前置--先--再使用;后置--先使用再--

*间接访问操作符(解引用操作符)

(类型)强制类型转换

例:if(!flag) 如果flag为假

int a=10;int b=a--; 最后a为9,b为10

强制转换类型int a=(int)3.14;

float f=(float)3.14;

12.条件操作符(三目操作符)

exp1? exp2:exp3 exp1如果为真,表达式结果为exp2,否则为exp3

逗号表达式 int d=(a+=2,b=a-5;c=a+b);

表达式从左向右依次计算,但是整个表达式的结果是最后一个表达式的结果

[]下标访问操作符 ()函数调用操作符

13.常见关键字

auto auto int a=10;

break case char const continue default do double else enum extern float for goto if int long return short

signed 有符号的 unsigned 无符号的 

sizeof static struct switch  typedef union void volatile while

register int num=100;建议把100放在寄存器中存储

14.局部性原理: CPU访问存储器时,无论是存取指令还是存取数据,所访问的都趋于聚集在一个较小的连续区域中。

①.连续的短时间内,(非常倾向于)访问连续的存储空间

②.越快的存储器,价格越

15.typedef类型定义

typedef unsigned int unit32;即将unsigned int重命名为unit32,所以unit32也是一个类型名

16.关键字static是用来修饰变量和函数的

①.static修饰局部变量,称为静态局部变量。一个普通的局部变量放在栈区,而被static修饰的局部变量放在静态区。static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

例:#include<stdio.h>

void test (){

static int i=0;

i++;

printf("%d ",i);

}

int main(){

int i=0;

for(i=0;i<10;i++){

test();

}

return 0;

}

最后结果为1 2 3 4 5 6 7 8 9 10

②修饰全局变量,一个全局变量在整个工程中都可以使用,全局变量具有外部链接属性,在其他源文件内部只要适当声明就可以使用

static修饰全局变量的外部链接属性就变成了内部链接属性,只能在自己所在的.c文件中使用,其他.c文件中无法使用,影响了变量的作用

③.修饰函数 函数是具有外部链接属性的,static修饰函数后,函数的外部链接属性变成了内部链接属性,被static修饰的函数只能在自己的.c文件中使用,其他的.c文件中无法使用,最终相当于影响了作用域

extern int add(int,int)声明外部符号统一函数

17.#define定义常量和宏 #define max(x,y)(x>y?x:y)

18.将内存划分成一个个小的内存单元,每个内存单元的大小是1字节,1个内存单元给1个地址

32位 32根地址线(电线),电线通电分为高电平低电平,转化成数字信号就是0/1,共2的32次方个,能够管理2的32次方字节的空间

int num=10;

num实际占用4个字节,每个字节都有地址,但&拿到的是第一个字节的地址(也就是最小的地址)

int *pa=&a;把pa叫做指针变量,是一个存放地址的变量

*说明pa是指针变量,int 说明pa指向的对象是int类型的

char w='w'; char* ch=&w;

*pa等价于a;

19.指针变量是用来存放地址的,指针变量的大小取决于地址的大小,32个0/1组成的二进制序列,需要32位bit位的空间存储,指针变量就需要4个字节

64位平台下地址是64个bit(即8个字节)

20.结构体 struct stu{

char name[20];

int age;

char sex[5];

char id[15]

};

struct stu u={"张三","20","男","20180101"};

printf("name=%s age=%d sex=%s id=%s ",s.name,s.age,s.sex,s.id);

struct stu *ps=&s;

printf("name=%s age=%d sex=%s id=%s",ps->name,ps->age,ps->sex,ps->id);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值