C语言学习记录Day9

 调用函数时,

()就是函数调用操作符
struct Stu//创建一个结构体类型
{
    //成员变量
    char name[20];
    int age;
    char id[20];
};
int main()
{
    int a = 10;
    struct Stu s1 = { "张三",20,"20211109" };//创建一个学生对象s1,并初始化
    struct Stu* ps = &s1;
    printf("%s\n", (*ps).name);
    printf("%d\n", (*ps).age);
    printf("%s\n", (*ps).id);
    printf("%s\n", ps->name);//->结构体指针操作符
    printf("%d\n", ps->age);
    printf("%s\n", ps->id);
    printf("%s\n", s1.name);
    printf("%d\n", s1.age);
    printf("%s\n", s1.id);
    //结构体变量.成员名
    return 0;
}

表达式求值
表达式求值的顺序一部分由操作符的优先级和结合性决定,有些表达式的操作数在求值的过程中可能需要转换为其他类型。
隐式类型转换
C的整型算数运算总是至少以缺省整型类型的精度来进行的,整型提升,
int main()
{
    char a = 3;//00000011
    char b = 127;//01111111
    char c = a+b;//10000010
    printf("%d\n", c);//1111111111111111111111110000010补码
    //                  1000000000000000000000001111110原码
    //                  -126

    return 0;
}


算术转换
两个操作数类型不同时,要把晓得类型转换成更大操作数的类型后执行运算
操作符的属性
1.操作符的优先级
2.操作符的结合性
3.是否控制求值顺序
如果表达式不能通过操作符的属性确定唯一的计算路径,那么这个表达式就是存在问题的


指针 
是编程预压你的一个对象,利用地址,他的值直接指向存在电脑存储器中另一个地方的值,地址指向该变量单元,称为指针
其实就是存放地址的变量,存放在指针中的值被当成地址处理

int main()
{
    printf("%d\n",sizeof(char*));
    printf("%d\n", sizeof(short*));
    printf("%d\n", sizeof(int*));
    printf("%d\n", sizeof(double*));

    return 0;
}

指针类型决定了指针进行解引用操作的时候,能够访问的空间的大小

 指针类型决定了:指针走一步走多远
int*p:p+1    4
char* p;p+1  1
double*p; p+1   8

野指针:指针指向的位置是不可知的 

1.指针未初始化

2.指针越界访问

3.指针指向的空间释放

如何避免?

1.指针初始化

2.小心指针越界

3.指针指向空间释放及时置NULL

4.之魂使用之前检查有效性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值