c语言基础笔记

一 :数据类型

    1.float类型,在输出的时候可以使用 .数字  来把浮点数精确到小数点后几位,比如 printf("%.3f",float)精确到小数点后三位,不足补0

    2.字符串接收 定义个字符数组

    char str[]="";

    scanf("%s",&str);  //遇到空格就停止接收

    gets(str);   //可以接收所有字符

    printf("%s",str);

   3.在向一个函数传入数组,直接传入数组名,其实就相当于传入的是数组的首地址指针;在函数中可以用数组形式接收int arr[],也可以用指针形式接收int * arr;

  

#include <stdio.h>
#define four 4;

void add(int arr[]);
//也可以是
void add(int * arr);

int main(void)
{
   int arr[four]={4,5,6,7};
   add(arr);
}

void add(int * arr)
{
    //在操作数组时  arr[i]==*(arr+i)
    int i;
    for(i=0;i<4;i++)
    {
        printf("%d",arr[i]);
        //也可以是
        printf("%d",*(arr+i));
    }   

}

 二:结构体

 struct books{
      int  num;
      char name[21];
      float price;
     }

2.1. 结构体内存占用

       2.1.1.结构体所占的空间可以见到的认为是各个成员所占内存空间之和

       int   4bit, char  1bit, float   4bit 

       所以结构体books的大小大概是29bit

        2.1.2.实际是最大成员变量所占空间的最小整倍数

              在结构体books中最大成员变量是int和float,都是4bit,4的最小倍数要比29大,所以就是32,

       因此实际占得大小是32bit

2.3 typedef   给类型重新指定名称

      typedef  int  TOINT

      int a=10;   =>  TOINT a=10;

     更改结构体的名称

   1.typedef  struct books  BKS;

2. typedef struct books{
      int  num;
      char name[21];
      float price;
     }BKS;

2.3 赋值

       2.3.1. 最特殊的是给结构体中的数组赋值

       错误写法:  BKS.name = "C primer Plus";

       正常写法:  strcpy(BKS.name,"C primer Plus");

      或者在定义结构体的时候使用指针指定名称

typedef struct books{
      int  num;
      char * name;
      float price;
     }BKS;

      这样就可以

      先申请内存空间malloc

      BKS.name = (char*) malloc(50*sizeof(char)); 

      strcpy(BKS.name,"C primer Plus");

      2.3.2. 结构体变量可以直接赋值给另一个结构体变量

      BKS a={......};    BKS b;

      b = a;    

 2.4 数组与结构体

     定义一个结构体数组,存放结构体

BKS  arr[5] = {
        {....},
        {....},  
        {....}
}

  访问的话就是,比如访问name : arr[0].name 

原文地址:https://www.cnblogs.com/hanyouchun/p/4070917.html