C语言从零开始——typedef和restrict

####   typedef   ####

/*
        typedef关键字,目的是给类型名重命名;注意:这里不是创造出新的类型,类似于给类型名起外>号
*/

include <stdio.h>
typedef int size;//这句话的意思就是对int进行重命名成size
typedef char * tpchar;//对char*类型名重命名成tpchar

int main(void)
{
        size i,j;       //此处就可以使用重命名来定义两个变量i和j

        tpchar p1,p2;
        //此处应该考虑:p1和p2都是char*类型的吗?
        char * p3,p4;
        //我们知道如上定义,仅仅是p3是char*类型的,p4实质上还是char类型的
        //可以使用sizeof验证:
        printf("sizeof(p1) = %d , sizeof(p2) = %d \n",sizeof(p1),sizeof(p2));
        printf("sizeof(p3) = %d , sizeof(p4) = %d \n",sizeof(p3),sizeof(p4));
/*
sizeof(p1) = 8 , sizeof(p2) = 8 
sizeof(p3) = 8 , sizeof(p4) = 1 
由结果可以看到:当使用typedef重命名一个类型名之后,类型名就类似于带了小括号,所以在此,p1,p2>都是char*类型的!!!
*/
        return 0;
}

####   restrict   ####

/*
        restrict专用于修饰指针,表示变量只能通过这个指针来修改数据
*/

include <stdio.h>
int func();

int main(void)
{
        int x = 0 , y = 1;
        printf("x = %d \n",func(&x,&x));
//      printf("x = %d \n",func(&x,&y));
//当我们分别传入x y 的地址时,会返回0;在子函数中的却解引用x=0;没问题
//可是当我们分别传入x x 的地址时,就会返回1;在子函数中的解引用就会对x赋值我们不想要的结果;
//此时我们可以在子函数形参中定义restrict来修饰指针。使得只有子函数中的*a可以对x地址进行操作!>!!
        return 0;
}
int func(int *a,int *b)
{
        *a = 0;
        *b = 1;
        return *x;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值