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

2018-03-14  本文已影响0人  syc_poker

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函数的区别”)

上一篇下一篇

猜你喜欢

热点阅读