美文网首页
C语言笔记——这章其实我是有些迷的

C语言笔记——这章其实我是有些迷的

作者: syc_poker | 来源:发表于2018-03-14 10:21 被阅读0次

    C语言笔记——这章其实我是有些迷的

    逗号运算符

    主要就是进行顺序运算,运算级别算是最低的运算符了,比赋值运算符 = 的级别还低。
    形式:表达式1 , 表达式 2, 表达式3
    上述表达式的主要意思就是先执行表达式1,然后是表达式2,最后是表达式3
    如果形式是这样:a = 1,c = a + 1;
    这样一个语句的话,那么就是先对 a 进行赋值,然后 c = a + 1

    条件运算符

    条件运算符和上述的逗号运算符有些类似。
    形式:exp1 ? exp2 : exp3

    exp都是表示这是表达式

    相当于 if 语句的简化版,上述的式子的意思就是, exp1是个判断表达式,要是为真就是执行exp2;要是为假就执行exp3。

    数组

    不能动态定义。

    但是这条在理解上有点问题,原本是不能动态定义的但是一会儿下面我会给个例子,他在C99标准下是可以运行的。因为如果按照我的理解就可以接受这个问题,要是理解不了就还是强行记背吧。

    #include<stdio.h>
    int main()
    {
        int n;
        printf("plz input length of text:");
        scanf("%d",&n);//只读取了数字,就还在缓冲区中留下一个\n
        char a[n+1];//这里为啥要多声明一个位呢,主要就是为了放后面的\0断位符
        printf("plz input your text:",a);
        getchar();//这是为了抵消缓冲区中还残留的一个\n
        for(i=0;i<n;i++)
        {
            scanf("%c",a[i]);
        }
        a[n+1] = '\0';//这里就是断位符
        printf("your text is:%s",a);
        return 0;
    }
    

    在上面这个代码中的这种动态声明就是可以的,因为我觉得其实不算是动态吧,毕竟 n 的值是一开始就先定了,然后再声明 a 数组的。
    数组的第一个元素是从下标 0 开始的。

    数组的初始化

    如果要将数组的值都赋为 0

    int a[10] = {0};
    

    这里只是把数组的第一个赋值为 0 ,但是后面他会自动赋值为 0 的。

    如果你只是声明了,但是并没有赋值的话,一个都没赋值的那种的话,数组的地址是分配好的但是并没有给那个地址上的值初始化。

    在数组初始化的时候还可以偷懒,可以不输入数组的长度直接在 = 号后面输入需要存入的数据,然后写成 int a[] = {0 ,1 ,2} 这样的

    sizeof函数

    如果sizeof的参数是一个数组,则计算的是这个数组占用的内存空间大小,比如:

    #include<stdio.h>
    int main()
    {
        int a[10] = {0};
        printf("%d",sizeof(a));
        return 0;
    }
    

    这样的运行结果就是 40 ,所以这个函数的参数是一个数组的话,他计算的就是这个数组占用的内存大小。

    在头文件:string.h 中,他的主要作用就是一个计数器,统计的就是长度了,并不是空间大小了。

    sizeof函数和strlen函数的主要区别

    这里直接给个百度百科词条连接吧,上面讲得挺详细的,可以直接参考看懂他。
    [strlen函数和sizeof函数的区别](https://baike.baidu.com/item/strlen/2737 “strlen函数和sizeof函数的区别”)

    相关文章

      网友评论

          本文标题:C语言笔记——这章其实我是有些迷的

          本文链接:https://www.haomeiwen.com/subject/cqkefftx.html