资讯专栏INFORMATION COLUMN

C语言(宏,内存,地址,指针,解引用)

Vultr / 1331人阅读

摘要:宏可以定义宏函数有符号的整形单精度浮点型双精度浮点型地址地址的进制表示形式的时候,取出时所占内存中个字节中第一个字节的地址取出的内存地址数值称为指针是一个指针变量,指向的是一个类型指针变量是一种变量

#include
#define NUM 100

int Add(int x,int y)
{
    int z = x + y;
    return z;
}

宏-#define 可以定义宏
#define ADD(X,Y)  ((x)+(y))


int main()
{
//    int a = NUM;
//    printf("%d/n",a);
    int a = 55;
    int b = 56;
    //函数
    int sum = ADD(a,b);
    printf("%d/n",sum);
    return 0;
}
%d-有符号的整形
%f-单精度浮点型
%lf-双精度浮点型
%p-地址-地址的16进制表示形式

int main()
{
    int a = 10;
    a的时候,取出时a所占内存中4个字节中第一个字节的地址
    printf("%p/n",&a);//取出a的内存地址
    int* pa=&a;//数值
    pa称为指针
    return 0;
    -pa是一个指针变量,int-pa指向的是一个int类型

    char ch = "w";
    char * pc = &ch;
    指针变量是一种变量,是用来存放地址的
    int a = 10;
    int * pa =&a;//数值
    *pa = 20;//*是解引用操作符
    printf(“%d/n”,a);
    a=20;

    return 0;
}
int main()
{
//    int a = 10;
//    int *pa = &a;
//    *pa = 20;
//    printf("%d/n",a);
//    return 0;

    double b = 3.14;
    double* pd=&b;
    //pd就是指针变量
    //*pd=5.5;
    printf("%lf/n",*pd);
    return 0;
}

int main()
{
    char ch = "w";
    char *pc = &ch;

    printf("%d/n",sizeof(pc));
    //指针变量是用来存放地址的!
    //地址就是那个编号
    return 0;
}

int main()
{
    printf("%d/n",sizeof(char*));
    printf("%d/n",sizeof(short*));
    printf("%d/n",sizeof(int*));
    printf("%d/n",sizeof(float*));
    printf("%d/n",sizeof(double*));
    return 0;
}


结构体 char short int float double ......
书:书名+作者+定价+出版社+书号
人:姓名+年龄+性别+电话+地址
复杂对象,不能用简单的类型直接描述

书的类型
书名+定价+书号

自己定义的一个书的类型
struct Book
{
    char name[30];//书名
    float price;//定价
    char id[20];//书号

};

int main()
{
    //结构体变量的定义和初始化
    struct Book b1 = { "C语言程序设计",55.0f, "C1001020"};
    //struct Book b2 = {"数据结构",60,DS001001};
    //struct Book b3 = {"操作系统",71.5f,"OS0001001"};
    printf("书名:%s/n",b1.name);
    printf("定价:%f/n",b1.price);
    printf("书号:%s/n",b1.id);

    return 0;
}
&取地址 *解引用  结构体变量.成员名

int main()
{
    printf("hehe/n");
    3 + 5;
    ;//空语句
    //return 0;

}

int main()
{
    int age = 20;
    if (age<18)
        printf("未成年/n");
    else if (age>=18&&age<30)
        printf("青年/n");
    else if (age>=30&&age<55)
        printf("中年/n");
    else if (age>=55&&age<70)
        printf("中老年/n");
    else if (age>=70&&age<100)
        printf("老年/n");
    else
        printf("老寿星/n");
    if(age>=18)
        printf("成年/n");
    else
        printf("未成年/n");
    return 0;
    if(age>18)
        printf("允许进入/n");
    return 0;
}

int main()
{
    int a=0;
    int b=2;
    if(a==1)
        {if(b==2)
            printf("hehe/n");
        }
    else
        printf("haha/n");

    return 0;
    else和离得最近的if匹配!!!
}

int main()
{
    int a;
    printf("%d/n",a);
    return 0;
}
int test()
{
    int a = 0;
    if(a)
    {
        return 1;
    }
    return 2;
}

int main()
{
    int a = 0;
    scanf("%d",&a);
    if(a%2==1)
    {
        printf("yes/n");
    }
    else
        printf("No/n");
    return 0;
}

int main()
{
    int i = 1;
    while(i<=100)
    {
        printf("%d ",i);
        i+=2;
    }
    return 0;
}
 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/120818.html

相关文章

  • C语言define和初级指针

    摘要:目录定义常量定义宏指针定义常量定义常量定义宏宏可以定义宏函数指针字符串字符有符号的整形单精度浮点型双精度浮点型地址地址的十六进制表示形式指针取出地址,地址是用十六进 ...

    wthee 评论0 收藏0
  • C/C++

    摘要:另外栈内存出了作用域就会自动释放掉,所以不需要手动去回收的。,其中指针变量的声明有如下三种形式其中第一种是被推荐的写法。数据类型 C语言中的基本数据类型,对于它分为两种: 1、signed 有符号的类型,也就是支持正负号的。 2、unsigned 无符号的类型,也就是没有负号,取值从0开始。 有符号和无符号的数据类型有啥区别呢?其实就是取值范围不一样,下面看一张对照表: showImg(ht...

    microcosm1994 评论0 收藏0
  • C语言基础】野指针与空指针

    摘要:避免野指针养成良好的编程习惯好的编程习惯可以避免很多问题,道阻且长,但行则将至二空指针是一个值为的宏常量意义为了标志指针变量没有指向任何变量空闲可用,在语言中,通常把赋值给此指针,这样就标志此指针为空指针,没有指向任何空间。 ...

    阿罗 评论0 收藏0
  • c语言中常见的一些坑和一些细节(建议收藏)

    摘要:博主接下来将会整理一些语言中常见的问题和坑,再看博主解释的时候可以自己思考一下变量的声明和定义有什么区别答变量的定义为变量分配地址和存储空间,变量的声明不分配地址。指针操作超过了变量的作用域范围如返回局部变量的地址。 博主接下来将会整理一些语言中常见的问题和坑,再看博主解释的时候可以自己...

    jhhfft 评论0 收藏0

发表评论

0条评论

Vultr

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<