zoukankan      html  css  js  c++  java
  • C 中注意的小问题

    输入:char ch[100],gets(ch);

            scanf("%d",&in);

            char ch,ch=getchar();

    VC:  所有变量声明放在所有操作前面;

    strlen实际上是,从参数表示的地址往后找,找到第一个'',即串尾。然后计算''至首地址的“距离”,即隔了几个字符,从而得出长度。
    char x[]={0xBC,0xDD,0xCA};中,实际上是定义了一个char型的数组,而由于x[0],即0xBC开始往后找,一直到0xCA,都没'',所以会继续往后。。。当然,实际上往后找到的是其他值。。。
    改char x[]={0xBC,0xDD,0xCA,0x00};后,应该就是3了。。。
    注意一下字符数组,例如
        char str[100] = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";
    定义了一个大小为100的字符数组,但是仅有开始的11个字符被初始化了,剩下的都是0,所以 sizeof(str) 等于100,strlen(str) 等于11。

    如果字符的个数等于字符数组的大小,那么strlen()的返回值就无法确定了,例如
        char str[6] = "abcxyz";
    strlen(str)的返回值将是不确定的。因为str的结尾不是0,strlen()会继续向后检索,直到遇到'',而这些区域的内容是不确定的。

    注意:strlen() 函数计算的是字符串的实际长度,遇到第一个''结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到''停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数。
  • 相关阅读:
    bzoj4196: [Noi2015]软件包管理器
    bzoj3992: [SDOI2015]序列统计
    bzoj 4178: A
    Spoj 8372 Triple Sums
    hdu contest day1 1007 Tricks Device
    hdu contest day1 1002 Assignment
    2018暑期生活指导第三周
    2018暑期生活指导第二周
    《大道至简》阅读笔记
    2018暑期生活指导第一周
  • 原文地址:https://www.cnblogs.com/rednodel/p/4367721.html
Copyright © 2011-2022 走看看