• c语言碎片知识


    1.标识符

      标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。

    2.strlen和sizeof的区别

      sizeof会计算字符串中末尾的'',而strlen不会。

      sizeof作用于字符数组的时候,表示的是字符数组的长度(字节数)

        如  char [15] a;  sizeof(a)  //值为15

      sizeof作用于指针的时候,表示的是指针变量所占的字节数。

        如  char *a;  sizeof(a)    //32位机中值为4,64位机中值为8

    3.数组初始化

      多维数组除了第一维可以为空外,其他不能为空,并且若有维度为空,必须声明的时候就初始化

      char a[]="abc";      //sizeof长度是4,末尾会自动补‘/0’

      char b[]={'a','b','c'};    //sizeof长度是3,末尾不会自动补‘/0’

      字符数组之间是可以比较大小的,按每个字符比较,这里a>b

      数组的维数不能是变量,必须是常量,但是C++中可以是变量

      int a[][3]={1,2,3,4,5,6,7,8,9}  等价于int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

    4.字符数组赋值

      字符数组只能在初始化的时候用字符串赋值 。

        char a[10];  a="ABCED";  //不合法

        char *a="ABCD";    //编译可以通过,但是有时候C编译器没有申请内存的时候会出错

        char *a;  a="ABCDE";  //正确

        char *s;  scanf("%s",s);    //错误,指针没有初始化

        char s[10]  scanf("%s",s);    //正确,因为编译器会给s[10]分配内存空间,即它有地址

    5. in a[10],int *p=a; *p++是值++还是指针++?

      指针++,因为++作为后缀的优先级比*高一个大级别,++作为前缀也比*高(在同一级别)但是*++p或者++*p的结合顺序都是从右到左,所以不需要考虑优先级。

    6.声明指针会不会被初始化?

      会,但是指向的是低地址,如00000000,或00000001,编译的时候能够通过,但是运行的时候可能会出错,因为这些地址是操作系统内核占用的地址,是不能修改或读的,修改或者读会导致程序发生中断。

    7. char **p[10]、char *(*p)[10]、char (**p)[10]的区别:

      需要注意的是 [ ] 的优先级是要比 * 高的,因此char **p表示的是一个存有10个二维指针的数组,p是这个数组的地址

      而加了括号以后char (**p)[10],中,**先与p结合,因此char (**p) [10],表示一个指向含有10个char元素的二维指针

      char *(*p)[10] 呢? 只有一个*和p结合,相当于一个一维指针,char *(*p)[10]表示一个指向有10个char * 元素的数组的指针。

    8.转义字符

      c语言中的转义字符由 或者 x 和数字构成,其中 加八进制数字,最多三位,最大取值为177。 x加十六进制,最多2位 ,最大取值为7f

    9.C语言中字符串常量相减 ,如"FLOWER"-"FLOW"实际上是字符串常量的地址相减

    10.c语言中的stdin和stdout

    11.堆的插入操作

    12.排序算法

  • 相关阅读:
    操作系统
    C++流类库(11)
    C++运算符重载(10)
    C++虚函数(09)
    C++向量(08)
    C++继承(07)
    ResNet实战
    ResNet,DenseNet
    经典卷积网络VGG,GoodLeNet,Inception
    CIFAR100与VGG13实战
  • 原文地址:https://www.cnblogs.com/foodie-nils/p/13726501.html
Copyright © 2020-2023  润新知