C语言基础知识小总结(1)
这几天在学习C语言,零零散散的学了十来天,这两天由于家里来了朋友,也没有顾得上写个总结,今天刚把朋友送走,下面就把这十来天的学习情况总结一下,一边在以后好复习与查看。
一、流程控制包括:顺序语句、判断语句、循环语句
二、数组、函数的地址表示方法是直接写变量名,其他的前面加 & 符号(目前我所知道的是这样,以后发现再补充)
例: int array[5]; //int数组
array 表示指向数组首元素的地址的指针
*array 表示首元素的值(通过地址的方法求值)
*(array+i) //i=0、1、2、3、4.... 这表示数组中的某一个元素的值
结构体指针调用其成员:
例:
struct student
{
int id;
char sex;
int age;
}sd;
struct student *sd1;
sd1->id;
sd1->sex;
sd1->age;
union(共用体标识符)
typedef(用来定义新的数据类型名来替代已有数据类型名)格式:typedef 源数据类型名 新数据类型名
预处理命令:文件包含命令,条件编译命令和宏定义命令
******:宏名一般使用大写字母,为了与变量名区别
宏函数:格式如下 #define 宏函数名(参数表) 字符串
例:#define M(x,y) x*y; //调用时就像调用有参函数一样 sum = M(int a,int b);
注意:宏的取消用#undef 、续行符:“\”
条件编译:
(1) #if(n)def 标识符 //当不带n时,标识符被宏定义过,就执行代码段1,否则执行代码段2;
代码段1; //当带n时,当标识符没有被宏定义过,就执行代码段1,否则执行代码段2;
#else
代码段2;
#endif
(2) #if 常量表达式1 //此条件编译类似于if-else语句的用法
代码段1;
#elif 常量表达式2
代码段2;
#elif 常量表达式3
代码段3;
....
#else
代码段n;
#endif
动态内存(也叫堆内存)的分配主要用到三个函数:malloc(); calloc(); realloc();
malloc(); 格式如下:void * malloc(unsigned int size);
size表示分配的字节数。
例:int * p=(int *)malloc(sizeof(int)*100); //分配100个int类型的内存空间
注意:因为不能将"void*"赋值给"int*"类型的指针变量,所以必须通过(int*)来将进行强制转换。函数的实 参为sizeof(int),用于指明一个整形数据需要的大小。
calloc(); 格式如下: void * calloc(unsigned int n,unsigned int size);
对比上面便可以明白:int * p=(int *)calloc(100,sizeof(int); //分配100个int类型的内存空间
realloc();格式如下:void * realloc(void * mem_addr,unsigned int newsize);
mem_addr是指需要重新分配的堆内存指针,newsize是指重新分配后的空间的大小。该函数的作用是先释放原来 men_addr所在的内存区域,并按照newsize指定的大小重新分配空间,同时将原有的数据从头到尾拷贝到新分配的 内存区域,并且返回该内存的首地址,即重新分配动态存储,日过重新分配成功则返回指向被分配内存的指针,否则返回空指针。
例: int * p=NULL;
p=(int *)malloc(sizeof(int)*10); //先分配10个int类型的内存空间
p=(int *)realloc(p,sizeof(int)*10); //重新分配100个int类型的内存空间
C语言基础知识小总结(1)的更多相关文章
- C语言基础知识小总结(2)
上个总结比较笼统,下面写的稍微详细点吧算是. 一.控制台屏幕打印 1.putchar(); 格式: void putchar(char c); //直接把一个字符输出到屏幕上 2.print ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- java基础知识小小结
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
- C语言基础知识-程序流程结构
C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- C语言基础知识-数据类型
C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
随机推荐
- CodePen避免自动刷新导致的JS卡死
经常需要做一些前端代码的实验, 这时候我往往会用JSFiddle或CodePen. 最近用CodePen更多一些, 里面提供的选项更加丰富, 提供了各种各样的HTML/Javascript/CSS P ...
- linux系统配置文件和用户配置文件及其作用
我的博客:www.while0.com /etc/issue 未登陆时控制台显示的文字 /etc/issue.net 远程登陆时控制台显示的文字 /etc/motd 用户登陆时显示的文字 这里先提供两 ...
- Android 窗口管理
一.概述 在Android系统中,从设计的角度来看,窗口管理系统是基于C/S模式的.整个窗口系统分为服务端和客户端两大部分,客户端负责请求创建窗口和使用窗口,服务端完成窗口的维护,窗口显示等. 在Cl ...
- EasyUI的增删查改(后台ASP.NET)
转自:http://www.cnblogs.com/dedeyi/archive/2013/04/22/3035057.html 某某人曾经跟我说,你们做系统不就是增删查改吗. 是啊,很多时候我们就是 ...
- (转载)javascript转自世纪流年blog
(转载)http://www.cnblogs.com/tfe/articles/164205.html 础知识 2005年5月2日22:25星期一 [ Dhtml ] 有些时候你精通一门语言,但是会发 ...
- 洛谷1439 排列LCS问题
洛谷1439 排列LCS问题 本题地址:http://www.luogu.org/problem/show?pid=1439 题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输 ...
- JavaScript高级程序设计60.pdf
错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...
- vimrc语法
前言 工欲善其事,必先利其器.一个programmer必然要先有一个好的editor.vim就是一个十分强大的编辑器.它的强大之处,在于其个性化和可定制.学习vim,就像学习Linux,学习perl, ...
- mongoDB文件太大查错纪录
日志系统,突然从24号之后的都断层了,交易看不见.查了一下问题是MongoDB把硬盘撑爆了,看了下情况: -bash-3.2$ du -h 82M ./log .1G ./db/journal .0K ...
- hdoj 3836 Equivalent Sets【scc&&缩点】【求最少加多少条边使图强连通】
Equivalent Sets Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 104857/104857 K (Java/Other ...