栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

define定义常量和宏 define定义常量

例:

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

int main()
{
    printf("%d",MAX);
    return 0;
}
define定义宏
#include 
#define ADD(X,Y) X+Y  //该宏仅完成替换

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

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

int main()
{
    printf("%dn",ADD(2,3));  //运行结果为5
    printf("%dn",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("%pn",&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 %lfn", s.name, s.age, s.score);  //结构体.成员变量,输出为张三 20 85.500000
    struct stu * ps = &s;
    printf("2: %s %d %lfn", (*ps).name, (*ps).age, (*ps).score);  //通过指针打印
    printf("3: %s %d %lfn", ps->name, ps->age, ps->score);  //通过箭头->符号找到地址中的对象打印
//三次打印结果均相同
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976684.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号