目录
C语言初学小问题
C语言注释
C语言注释很容易出错,只会识别最近两个的/**/
字符数组如果初始化,一定要写数组数.
疑惑:数组与取数组地址问题
计算时候一定要注意结果和操作的时候的数据类型.计算浮点的时候一定要有一个是小数,且输出时候 float 是 %f,double %lf
EOF
遇到错误或者文件结束返回-1---EOF--end of file
一不小心把解决资源管理器给关了
真假小问题
/C语言中,0就是假,非0就是真
特殊操作符
介绍单目操
操作符中的++和--
{
条件操作符
exp1?exp2:exp3
int main()
{
int a = 0;
int b = 5;
int c = 10;
int d = (c = a + b, b = a + b, c = b + c);
printf("%d", d);
return 0;
}
逗号表达式
逗号表达式(exp1,exp2,exp3)从左向右 依次计算,结果取最后一个/
特殊关键字
关键字typedef
typedef 顾名思义是类型定义,这里应该理解为类型重命名
int main()//重定义关键字typedef
{
typedef unsigned int unit;
unit x = -5;
printf("%d", x);
return 0;
}
关键字register
使用关键字register提醒寄存器,通过使用CPU寄存器,而不是堆栈来处理特定的变量,从而提供对变量的快速访问。
虽然寄存器不一定会满足上述要求,但如果变量被存储在寄存器中,则没有内存地址,因此不能将地址操作符用于寄存器变量。
int main()
{
register int x = 6;
return 0;
}
int main()
{
register int x = 6;
printf("%p\n", &x);
return 0;
}
static - 静态的/
#include <stdio.h> 一个全局变量不给初始化的话,默认会被初始化为0 //int a; // //int main() //{ //int b=0;//一个局部变量不给初始化的话,默认是随机值 //printf("%d\n", b); // printf("%d\n", a); //return 0; //}
1. static 修饰局部变量//
2. static 修饰全局变量//
3.static 修饰函数/
1. static 修饰局部变量//
本来一个局部变量存储在栈区里,被static修饰的局部变量是存储在静态区的
存储在静态区的变量出了它的作用域变脸也不销毁,所以生命周期长,作用域不会被改变
static修饰局部变量的时候,改变了局部变量的存储类型,使其的生命周期与程序的生命周期
static修饰全局变量和函数
//static 修饰全局变量 //extern 是用来声明外部符号的 //extern int g_val; // //int main() //{ //printf("%d\n", g_val); // //return 0; //}
extern 用来声明外部符号的.一个工程的两个程序是单独编译的
.c文件先单独编译成.obj文件再链接变成可执行程序.exe
全局变量有外部链接属性
当static修饰全局变量.改变了它的链接属性
从外部链接属性变成了内部链接属性
这时static修饰的全局变量只能在本原文件(.c)使用,其他文件无法用到
修饰函数同理.
#define定义常量和宏
#define定义常量
#define MAX 5;//注意用大写,与其他定义区别
#define定义宏
#define MAX 5;//注意用大写,与其他定义区别 #define SUM(X,Y) ((X)+(Y))//注意括号 int main() { int x = 0; int y = 1; printf("%d", SUM(x, y)); return 0; }
指针
内存
内存分为一个个小的内存单元,每个内存的大小是1个字节
为了能够有效的反问道内存的每个单元,就给内存单元进行编号.这些编号为内存单元的地址
(8条消息) 物理地址和虚拟地址的概念_Iqian1314的博客-CSDN博客_物理地址和虚拟地址
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的
找到内存窗口
int main() { int a = 10; int *pa = &a; return 0; }
解引用操作符
int main() { int a = 10; int *pa = &a; *pa = 20;//解引用操作符 return 0; }
终结
通过指针变量中存储的地址就能找到指针指向的空间.
指针变量就是用来存放地址的
地址的存放需要多大空间,指针变量的大小就应该多大,.
int main() { char ch = 'w'; char* pc = &ch; int a = 10; int* pa = &a; *pc = 'x'; printf("%d", sizeof(pc)); printf("%d", sizeof(pa)); return 0; }
学习心得
今天从九点半学到11:50 两个半小时
下午从两点半学到五点半:三个小时
晚上从七点学到十二点:五个小时
自我感觉认真做了博客,认认真真的注意发文内容,今天学了指针感觉比较难
学习时长有点太长了,明天适当剪短一下,不让自己太紧张.