字符串标准函数

字符串标准函数的原型在头文件string.h中

  • 输入字符串:gets(字符数组名)。该函数输入的字符串中允许包含空格,而scanf()不允许

  • 输出字符串:puts(字符数组名)

  • 求字符串长度:strlen(字符数组名)

    除法

  • 除数、被除数都是整数,结果也是整数。结果不能整除的情况下直接丢掉小数

  • 除数、被除数有一个小数,结果也是小数,并且是double类型

数组

  1. 声明数组a[11]表示有11个数,即a[0]到a[10]
  2. 内层外层循环的变量不能相同

结构体

  1. 理解
    结构体其实是将数组、变量、指针变量等做了个封装,成为我们定义的一个新的数据类型。我们就可以把封装起来的内容作为整体对待。新数据类型每定义一个变量,就可以同时存储多个变量、数组等。
  2. 使用
    struct queue
    {
    	int data[100];//队列的主体,用来存储内容 
    	int head;//队首 
    	int tail;//队尾 
    };
  • struct是结构体关键字,queue是为结构体起的名字
  • 定义结构体的变量时不能忽略掉struct,例如:struct queue q;
  • 末尾有分号
  • 通常main函数外面
  1. 成员运算符 .
    声明的结构体变量用来访问结构体内部成员。例如:
    struct queue
    {
    	int data[100];//队列的主体,用来存储内容 
    	int head;//队首 
    	int tail;//队尾 
    };
    struct queue q;
    q.head=1;
    q.tail=1;
  2. 结构体指针运算符 ->
    指向结构体的指针用来访问结构体内部成员。例如:
struct node
{
    int data;
    struct node *next;
}
struct node *p;
p=(struct node *)malloc(sizeof(struct node));
scanf("%d",&a);
p->data=a; //数据存储到当前节点的data域中
p->next=NULL;

指针和malloc函数

指针

  1. 指针存储着一个内存空间的地址

  2. 定义一个指针

    int a;
    int * p;

    定义一个指针,只需在变量前面加一个 * 号。这里的指针只能存储一个存放整数的内存空间的地址

  3. 指针如何存储地址

    p = &a;

    &叫取地址符。这样整形指针p获得了整型变量a的地址。理解为指针p指向了整型变量a

  4. 可以通过指针p来操作变量a。
    例如,输出变量a的值

    int a=10int * p;
    p=&a;
    printf("%d",* p);

    这里的 * 号是间接访问运算符。作用是取得指针p所指向的内存中的值。

  5. C语言中 * 号有三个用途

    • 乘号。加减乘除
    • 声明指针变量。在定义指针变量时使用,如:int * p;
    • 取得指针所指向的内存中的值。简介访问运算符。例如printf(“%d”,* p);

malloc函数

  1. 在内存中存储整数10

    • int a=10;
    • malloc(4);
  2. 使用malloc函数会从内存中申请分配指定字节大小的内存空间。此处申请的是4个字节。不知道int类型4个字节还可以通过sizeof(int)获取int类型所占字节数。申请好4个字节空间后,就需要用一个指针来指向这个空间。

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

    需要注意的是,malloc函数返回类型是void * 类型。void * 表示未确定类型的指针。在C语言和C++,可被强制转换为任何其他类型的指针。此处我们将其强制转化为整形指针

  3. 指针存储的是某空间地址,那为什么分不同类型的指针呢?
    是为了让系统知道某空间应该取多少个连续内存作为一个数据。

  4. 例子
    存储整数10的代码如下

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int *p;
    	p=(int * )malloc(sizeof(int));
    	* p=10;
    	printf("%d",* p);
    	return 0;
     }
  5. 为什么要用如此复杂的办法存储数据?
    预先的方法我们必须预先准确的知道所需变量的个数,也就是说我们必须定义出所有变量。定义一百个,程序就只能存储一百个。通过malloc函数我们可以在程序运行的过程中根据实际情况来申请空间

最后:个人觉得指针和malloc函数谁都离不开谁。malloc申请的内存需要指针指示,而指针用来指示一个不确定的空间才发挥了真正作用。

其他

getchar();和system(“pause”)都可以用来防止程序结果一闪而过。后者包含在头文件stdlib.h中