IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 初识c语言5——12.#define定义常量和宏、13.指针、14.结构体(struct关键字) -> 正文阅读

[C++知识库]初识c语言5——12.#define定义常量和宏、13.指针、14.结构体(struct关键字)

12.#define定义常量和宏

(1).define在c语言中是一个宏定义的关键字

(2.)定义一个标识符来表示常量,标识符不占内存,只是一个临时的符号

(3.)define的作用是方便程序段的定义和更改

(4.)宏不能实现递归,只能对文本进行参数的替换,并不能简化计算

#include <stdio.h>
#defien MAX 10                //定义标识符常量
#defien ADD(x,y) ((x+y)+(y))    //定义宏,为了防止替换后计算出现错误,一般用()扩起来
int main()
{
    int sum=ADD(2,3);        //sum=2+3
    printf("sum=%d",sum):    //打印5
    sum=MAX*ADD(2,3);        //sum=10*((2+3)+3)
    printf("sum=%d",sum);    //打印80
    return 0;
}
    
    

13.指针

(1)指针相当于地址,指针变量是用来存放内存地址的变量,在同一cpu构架下,不同类型的指针变量所占用的储存单元长度是相同的,而存放数据的变量因数据数据的类型不同,所占的存储空间长度也不同

(2)变量在内存中分配空间,每一个内存单元都有内存地址,所以变量也是有地址的

(3)解引用:" * "的作用是引用指针指向的变量值,引用其实就是引用该变量的地址," 解 "就是把该地址对应的内容解开,就像打开一个包裹一样,那就是该变量的值,也就是说,解引用是返回内存地址中对应的对象

(4)Eg:整型指针

#include <stdio.h>
int main()
{
    
    int str=10;
    int* p=&str;    //取出str的地址赋给int*类型的指针变量p,使p指向str地址的起始位置
    *P=20;          //p是一个int* 类型的指针变量,*p就是对它进行解引用操作
    printf("%d",str);    //p指向的是str的起始位置,p指向的内容被替换所以打印20
    return 0;            //注释:若要替换指针所指向的内容,必须对该指针进行解引用操作
                         //指针所指向的是一个地址(编号),可以说指针就是地址
}

? (5)p指向str地址的起始位置视图

p
10
str? ??? ??


(6)Eg:字符指针? ? ?? ? ? ?

#include <stdio.h>
int main()
{
    char ret='w";
    char* p=&ch;
    *p='c';
    printf("%c\n",ret);    //单个字符用%c进行打印,字符串用%s进行打印
    return 0;
}

(7)指针变量的大小

1.指针变量的大小取决于地址的大小

2.32位平台下地址占4个字节(1个字节=8bit)

3.64位平台下地址占8个字节

4.

#include <stdio.h>
int main()
{
    int str=10;
    int* p=&str;
    char num='w';
    char* q=&unm;
    //32位平台下
    printf("%d\n",sizeof(str));    //4
    printf("%d\n",sizeof(p);       //4
    printf("%d\n",sizeof(num));    //1
    printf("%d\n",sizeof(q);       //4
    printf("%d\n",sizeof(int*));   //4
    printf("%d\n",sizeof(char*));  //4
    return 0;
}

14.结构体(struct关键字)

1.结构体是一种数据类型,该数据由一组称为成员的不同数据组成,每个成员可以具有不同的类型,结构体通常用来表示不同但又相关的若干数据

2.关键字struct和结构体名组合成一种类型标识符,成员又称为成员变量,它是结构体所包含的若干基本的构造类型,必须用" { } "括起来,并且用" ;"结束,每个成员应表明具体的数据类型

3.语法:

struct 结构体名
{
    类型名1 成员1;
    类型名2 成员2;
    ....    ....
    类型名n 成员n;
};

?4.Eg:

#include <stdio.h>
struct stu
{
    char name[20];   //名字
    int age;        //年龄
    char sex;       //性别
    char id;       //学号
};
int main()
{
    struct stu s={"小明","20","男","123456789"};
    printf("name=%s age=%d sex=%s id=%s\n",s.nam,s.age,s.sex,s.id);    //形式1
    struct stu* ps=&s;    //结构体类型的指针变量ps
    printf("name=%s age=%d sex=%s id=%s\n",(*ps).nam,(*ps).age,(*ps).sex,(*p).id);//形式2
    printf("name=%s age=%d sex=%s id=%s\s",ps->name,ps->age,ps->sex,ps->id);    //形式3
    return 0;        //形式1等价于形式2,通过解引用方法解开ps的地址找到里面的内容s
}

    

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

初识C语言:完结散花

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 12:51:59  更:2022-01-16 12:52:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:31:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码