C语言学习笔记

变量四大要素:

例:int a = 1;       特点

变量名

a不能以数字开头(只能下划线和字母)、区分大小写

变量类型

int
变量值1
存储空间a的地址

变量必须先声明再使用

数据类型说明特点
int表示整数,最大值是2^位数4个字节,32位
float表示小数点后7位的小数4个字节,32位
double表示小数点后16位的小数8 个字节,64位
char表示一个字母1个字节,8位

printf、scanf知识点和注意点

1、printf

例:printf("我的身高和体重分别为%d,%d\n", x, y);
组成部分说明知识点
%d占位符与变量顺序对应
我的身高和体重分别为普通字符
"我的身高和体重分别为%d,%d",格式字符串不是一般的字符串
x, y变量
\n换行符\是转义字符,/是除号,%是取余数
%dint
%cchar
%ffloat
%lfdouble
%s字符串
%p打印内存地址,而不是磁盘地址
%x十六进制输出

强制转换

其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

float a = 1.5;
(int)a;把a强制转换为整数,变成了1

scanf:

C 库函数 int scanf(const char *format, ...) 从标准输入 stdin 读取格式化输入。

scanf(占位符,变量地址)

scanf("%d %d",&a,&b);

注意点:

&a&取地址符不能忘
字符和空格都要原样输入在scanf中最好别加什么空格和字符
%c的时候,空格也相当于一个字符
输入不同的数据类型的时候最好分开
不要加入\n这种情况,输入一个数字然后敲下回车后,程序还是阻塞着的。

条件,循环语句

if...else 

注意点

if()

{

}

括号中的语句终究会转换成0或1,1才会执行大括号内的代码语句
==双等号才是判断

if 语句后有大括号, 则执行大括号里面所有的语句;

如果没大括号,则只会执行第一条语句.  

switch...else

应用于多个分支且是并列关系

while、for、do...while

for循环语句的循环体如果只有一个语句,则大括号可以省略;如果循环体由多个语句组成,就必须要使用大括号(否则将只把第一个语句作为循环体,而后面的语句则作为“循环体以外”的语句处理)。

continue结束本次循环某一次循环进行跳过
break结束整个循环循环到达某个标准结束

数组

int a[10]他表示定义了一个整型数组,数组名为a,此数组有10个整型元素
相同的数据类型
从0开始计数,用a[i]来访问第i个元素
常用for循环来赋值,输出
数组是内存当中的连续空间
可以部分赋值
可以直接写成int a[]

sizeof是个关键字,不是函数,计算大小

*是取值运算符,他把后面跟的内存地址中的东西“取出来”

指针就是地址,地址就是指针

指针变量是变量,是存放地址的变量

int *p

*

这里的*是一个标识符,告诉系统我是一个指针变量,

是用来保存别人的地址的

int告诉系统,该地址只能存放整型数据

如果指针变量类型和存放数据类型不同的情况下,取值的时候会出问题

原因:

        取值运算符会根据指针的变量类型,访问不同大小的空间

        如:char *c = &a;

                a = 0x1234;

                则*c的输出为34

指针传参是为了让函数直接操作变量的地址,直接改变变量本身,函数通过*来访问变量地址,直接拿出变量本身的数据,然后进行操作。

类型地址
数组数组名就是首个元素地址
函数函数名

函数指针

函数名称本质上是一个函数的入口地址常量,或者换句话说,函数名称是指向函数的指针常量(函数名称实质上是这个函数的代码和数据在内存中的首地址)

int (*p)(); // 这样定义指向函数的指针
// 应说明如下问题:
// 1、这里的()绝对不能少;
// 2、前面的int类型应该和这个指针未来要指向的函数的返回值类型保证一致。
p = add;

result = p(3, 4); // 也可以写成:result = (*p)(3, 4);

int (*f) () :这里 "f" 是一个函数指针 ,它存储着一个没有参数,返回值为int类型的函数的地址

结构体.和->的理解

"."一般情况下读作"的”。

“->”一般读作"指向的那个结构体的"。

结构体用.

结构体指针用->,他毕竟只是一个指针,而非结构体。

结构体中有成员,而结构体指针中只有一个结构体的地址。

scanf为什么变量前要取地址呢?

因为想通过一个函数改变一个变量的值的时候,必须把这个变量的地址传过去!

数组长度直接array.length

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值