鹏哥C语言 - 5. 常量和宏,初识指针,初识结构体

define定义常量和宏

define定义常量

例:

#define MAX 1000  //defeine定义的MAX为常量

int main()
{
    printf("%d",MAX);
    return 0;
}

define定义宏

#include <cstdio>
#define ADD(X,Y) X+Y  //该宏仅完成替换

int main()
{
    printf("%d\n",ADD(2,3));  //运行结果为5
    printf("%d\n",4*ADD(2,3));  //运行结果为11,而不是4*5
    			//4*2+3=11
    return 0;
}

#define ADD(X,Y) ((X)+(Y))  //(X)表示x可能为一个表达式,此种写法不会出现上述问题

int main()
{
    printf("%d\n",ADD(2,3));  //运行结果为5
    printf("%d\n",4*ADD(2,3));  //运行结果为20
    			//4*(2+3)=20
    return 0;
}

指针

内存

内存的使用

  • 内存这种空间的使用与现实生活中空间的使用非常相似。
  • 为了有效使用都编了一个精确的地址(指针)。
  • 内存被划分成一个一个格子,再给每个格子编号。
内存的编号规则

32位:32根地址线——物理线,可以通电(1/0),32位二进制的所有可能性(1/0组成的二进制序列)共有232个可能性,即232个编号,即232个地址。
64位:264个地址。

一个内存单元的空间

一个内存单元大小为一个字节(1 Byte = 8 bit)。

变量地址

调试 -> 打开内存窗口/监视窗口 -> 输入"&a"取的变量a的第一个字节的地址。

int main()
{
    int a = 10;
    printf("%p\n",&a);  //运行结果为0x7ffcc17a8c2c,为十六进制
    int * pa = &a;  //*说明pa是指针变量,int说明pa指向的对象是int型
    *pa = 20;  //*:解引用操作,*pa即通过pa中储存的地址找到变量a
    return 0;
}

指针变量的大小

指针用于存放地址,所以指针变量的大小取决于存储地址需要的空间大小。
32位: 32bit - 4byte
64位: 64bit - 8byte

结构体 struct (& * . ->)

结构体可以让C语言创建新的类型

struct stu
{
    char name[20];
    int age;
    double score;
};

struct book
{
    char name[20];
    float price;
    char id[30];
};

int main()
{
    struct stu s = {"张三",20, 85.5};  //结构体的创建和初始化
    printf("1: %s %d %lf\n", s.name, s.age, s.score);  //结构体.成员变量,输出为张三 20 85.500000
    struct stu * ps = &s;
    printf("2: %s %d %lf\n", (*ps).name, (*ps).age, (*ps).score);  //通过指针打印
    printf("3: %s %d %lf\n", ps->name, ps->age, ps->score);  //通过箭头->符号找到地址中的对象打印
//三次打印结果均相同
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值