c语言复习

姓名:黄诗佳 日期:2018年6月22日

今日学习任务:复习关于数组与指针以及关键字等c语言知识点还有冒泡排序输出。

今日任务完成情况:按时完成今天的任务,开发代码量约150行。

今日开发中出现的问题汇总:指针和数组的结合运用不熟悉。

今日未解决问题:数组的地址运用还要继续消化。

今日开发收获:巩固了数组与指针的知识点,对以前没有注意到的基础知识点有了更系统的学习。(堆,栈,程序运行步骤等)

自我评价:写代码速度依旧很慢,还要更加系统的学习。

1.一维数组,二维数组如何定义,初始化?如何在程序中赋值?

一维数组:

类型说明符  数组名[常量表达式];  例如:  int a[10];  

赋值:在定义数组时对数组元素赋以初值   例如:int a[10]={0,1,2,3,4,5,6,7,8,9};

二维数组:类型说明符  数组名[常量表达式][常量表达式]; 如:float[3][4];

赋值:

1.在定义数组时对数组元素赋以初值。
例如:int a[10]={0,1,2,3,4,5,6,7,8,9};
2. 可以只给一部分元素赋值。例如: 
 int a[10]={0,1,2,3,4};    
定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。
3. 如果想使一个数组中全部元素值为0,可以写成:
      int  a[10]={0,0,0,0,0,0,0,0,0,0};   
     或int a[10]={0};

      不能写成:int a[10]={0*10};

4. 在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。
   例如:int a[5]={1,2,3,4,5};
   也可以写成  int a[]={1,2,3,4,5};  
   int a[10]={1,2,3,4,5};  只初始化前5个元素,后5个元素为0。
5.数组的地址,a和&a

2.字符数组如何定义,初始化,如何程序中赋值?:

例如:char c[10];
  c[0]=′I′ ;  c[1]=′ ′;   c[2[=′a′;   c[3]=′m′;
  c[4]=′ ′;   c[5]=′h′;  c[6]=′a′;   c[7]=′p′;
  c[8]=′p′;   c[9]=′y′;

3.字符数组如何定义,初始化,如何程序中赋值?

对字符数组初始化,可逐个字符赋给数组中各元素。
例如:
char c[10]={‘I’, ‘’,‘a’,‘m’,‘’,‘h’,‘a’,‘p’, ‘p’,‘y’} ;

4.字符串常见函数的使用,不用函数如何实现字符串的复制,字符串长度的实现?

新建一个空数组,将字符串一个一个放入空数组中。

定义一个计数位flag,将字符串中的字符一个个和\0进行比较,不相等时flag+1,相等时结束比较,此时flag值为字符串长度。

5.函数的构造有哪些?入参,返回值如何在函数中体现?形参,实参是如何传递数据?

构造:函数类型     函数名(形式参数类型说明表){声明部分 执行部分}

入参用形式参数来体现,返回值则由函数类型来决定。

数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值。

6.值传递,地址传递是怎么回事?如何实现在子函数中数值交换后在主函数中能实现?

值传递:

函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值;

地址传递:

函数调用时,将数据的存储地址作为参数传递给形参

7. Auto,register,extern,static关键字的使用,详细说明


auto    
普通局部栈变量,是自动存储,这种对象会自动创建和销毁 ,建议这个变量要放在堆栈上面,调用函数时分配内存,函数结束时释放内存。一般隐藏auto默认为自动存储类别。我们程序都变量大多是自动变量。
register
 寄存器变量,请求编译器将这个变量保存在CPU的寄存器中,从而加快程序的运行
extern   
外部变量声明,是指这是一个已在别的地方定义过的对象,这里只是对变量的一次重复引用,不会产生新的变量。 
static  
 静态数据,数据存放在全局数据区,但作用域只是本文件/函数 中,所以你可以在两个不同的文件/函数内部申明同名的static变量,但是它们是两个不同的全局变量。 如果是定义在函数内,那么该对象具有无链接,函数外不能对其访问。如果是定义在函数外,那么该对象具有内部链接,其它程序文件不能对其访问。

8.文件的包含有几种?分别表示什么意思?

#include  "stdio.h"  在当前目录和TC指定的目录中找该文件
#include  <stdio.h> 在由TC指定的文件目录中找该文件

9.宏定义如何实现?撤销定义如何实现?

不带参数宏:

一般形式:   #define   宏名    [宏体]
功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面)
作用域:从定义命令到文件结束
#undef可终止宏名作用域
     格式:   #undef     宏名
   #define    YES   1
       #define     NO     0
       #define     PI      3.1415926
       #define     OUT     printf(“Hello,World”);

带参数宏:

一般形式:  #define    宏名(参数表)     宏体

例   #define    S(a,b)    a*b
        ………..
       area=S(3,2);
宏展开:         area=3*2;
宏展开:形参用实参换,其它字符保留
宏体及各形参外一般应加括号()

撤销定义:

#undef命令可以取消定义一个名称为宏:

#undef name

 这个命令使预处理器忘记name的所有宏定义。取消一个当前未定义宏的定义并不是错误。当一个名称被取消定义之后,就可以向它提供一个全新的定义(使用#define),而不会产生任何错误。在#undef命令内部,并不会执行宏替换。

猜你喜欢

转载自blog.csdn.net/weixin_41478713/article/details/80777826