大一下学期c语言课程课堂笔记(整学期)

一             细节

逗号表达式要看整个式子是否在括号里面,如果没有括号,则先算等号表达式,在算逗号表达式。

switch语句case事件中看是否有break;语句,如果没有,接着往下运行。

定义变量时,是按堆栈方式分配内存,先定义的地址大,后定义的地址小。

二             数组

数组长度必须是大于0的整数常量,不能是变量或负数;

数组整体初始化只能在定义的时候。

double n[10]={1,2,3,4,5};

之后只能单个的对数组中的元素赋值。

n[1]=2;

数组名是常量(类似于宏常量,系统不分配内存,所以无地址。),不能改变它的值,如:n++;是不对的。

&n;是整个数组的地址,&n+1;则地址增量为整个数组元素个数的地址。

数组名n就是数组变量的第一个元素的地址。n=起始地址。而n[1]则是一个变量名。中括号是下标运算,a[0]=10;[]=*();a[0]=*(a+0);

二维数组可以作为一维数组用;

二维数组定义时行数可以省,但列数不能省。

如:int b[2][5];

b[1],b[6],b[9];都是引用二维数组的元素。

字符串的头文件:<string.h>

字符串长度:第一个为‘\0’之前的有效字符个数。

字节数:存储整个字符串所需的字节数

单引号中间必须有东西,否则是语法错误。

输出字符串用%s,只有遇到’\0’结束。

双引号引起来的字符串是一个地址。”abc”是第一个字符的地址。

Printf(“%p  %p”,&”abc”[0],”abc”);

Strncpy()不一定有’\0’;

动态数组

头文件<stdlib.h>

函数malloc(size_t  size);申请连续(类似于数组)内存,返回首地址。

Int * const p=(int*)malloc(5*sezeof(int));//括号里是字节数。

;//p为常量,与数组名相似。

If(p==NULL)

{exit(0);//强制终止程序。

 

}

free(p);//释放内存。Free函数释放内存。参数为指针。

P=NULL;//释放完成置空。

Calloc函数:calloc(size_t num,size_t size);

指针数组:数组每个元素是指针变量;

数组指针:如:int(*p)[5];p所存储的是整个数组的地址,若p+1则地址移动整个数组元素个数地址。

重点:

一维数组与指针的关系;

二维数组与指针的关系。

I                    实例代码

冒泡排序优化:

flag=0;

for(i=0;i<len-1;i++)

{

      for(j=0;j<len-1-i;j++)

      {

      if(grad[j]>grad[j+1])

           tem=grad[j];

           grade[]

      flag=1;

      }

      if(flag=0)

      break;

}

三             结构体

四             拓展算法

求任意输入的数的位数:每次除10,直到为0,所得次数就是位数。

随机函数rand() ,srand()

产生随机数

要产生随机种子,使每一次的随机数都不一样。

srand=((int)time(0));产生随机种子;

magic=rand()%100+1(求1到100的随机数);

实数求模 fmod(x,5);

实数 判等 或 判非等 用fabs()函数;

五             生存周期

{

      Int a=10;//局部变量。本地生存周期。

}

静态生存周期的变量初始化为0;

Static int c=19;静态变量,生存周期为整个程序运行过程。作用域为花括号体内。

全局变量的作用域由具体定义的位置和extern(全局声明时引用,可以使别的源文件引用)说明。

定义位置以下。

声明不分配内存,不能初始化;

局部变量和全局变量冲突,则局部变量优先。

局部变量默认的为auto型。

六             Typedef的用法

Typedef int RMB;给已有的变量名起外号。使变量形象化。

Typedef long Uint32;跨平台的需要。

Typedef int const * KPINT;

KPINT p1;  简化长的数据类型。

Int arr[10];

Typedef int ARR[10];//数组名直接就是别名。

ARR a1;

七             函数分类

I                程序在内存的分布区域

 

II            标准库函数

malloc;

calloc;

free;

III         自定义函数

八             函数指针

函数名就是函数代码区的首地址。

Void (*pf)()=fun;(fun为函数名);

九             链表

//先定义结构体变量。

  typedef struct student

{

  char name[10];

  int score;

  char ID[10];

}STU;

//在函数中创建动态链表

STU *head,*q,*p;//创建链表头指针。

head=(STU*)malloc(sizeof(STU));

q=head;

while(1)//在死循环中进行动态链表内存的申请和分配。

{

p=(STU*)malloc(sizeof(STU));

//对p进行处理。当达到某种条件时,以break;语句中断循环。

q->next=p;//将链表连接。

q=p;//q指向刚生成的这个节点。

}

十: 关于c语言库的函数运用,要参考一定的资料,熟练掌握,有助于c语言水平的提高。

 

 

posted @ 2012-07-08 01:55  蓝清凡  阅读(817)  评论(0编辑  收藏  举报