学习C++首先要回忆起C语言当中的指针和结构体知识,本文作者将通过一段代码来总结指针和结构体基础知识:指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。结构体是一个由程序员定义的数据类型,可以容纳许多不同的数据值。

点击查看代码
#include<iostream>
using namespace std;
//#include<string>
struct student
{
int age;
string name;
int score;
}; struct teacher
{
string name;
int id;
int age;
struct student stu;
}t; struct grade
{
string name;
int age;
int score;
}s1; void test01()
//32位(x86)-4个字节 64位(x64)-8个字节(无论是什么数据类型)
{
//int a;
//int* p;
//p = &a;
//或者int* p = &a;
//cout << sizeof(p) << endl;
} void test02()//空指针
{
//空指针用于给指针变量进行初始化
//int* p = NULL;
//空指针是不可以直接进行访问的
//*p = 190;
//cout << *p << endl;
}
//野指针就是指针指向的位置是不可知的
void test03()
{
//地址传递会改变实参的值
//值传递不会改变实参的值
} void test04()//const
{
//看const右边紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量
//int a = 10;
//int b = 20;
//常量指针const int*(指针)
//const int* p1 = &a;
//p1 = &b;//yes
//*p1 = 20;//no
//指针常量int* const(常量)
//int* const p2 = &a;
//p2 = &b;//no
//*p2 = 20;//yes
//const 修饰指针与常量
//const int* const p3 = &a;
//*p3 = 20;//no
//p3 = &b;//no
} void test05()
{
//利用指针来访问数组当中的每一个元素
int arr[] = {1,3,5,7,9,11,13};
int* p = arr;
for (int i = 0; i < 7; i++)
{
cout << *p << endl;
p++;
}
} void test06()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//求数组的长度
int len = sizeof(arr) / sizeof(arr[0]);
int len1 = sizeof(arr);//数组总的字节数
int len2 = sizeof(arr[0]);
cout << len << endl;
//冒泡排序:0~n-1与0~n-i-1
} void test07()
{
//结构体属于自定义的数据类型(可以存储不同类型的数据类型)
//结构体当中还有string类型的时候 使用cout输出该属性 加头文件string
string name = "zfx";
cout << name <<endl;
} void test08()
{
t.name = "wsb";
t.age = 45;
t.id = 1;
//结构体当中的结构体
t.stu.age = 19;
t.stu.name = "zfx";
t.stu.score = 88;
cout << t.name << " " << t.stu.name;
} void test09(struct grade* s1)
{
//将函数当中的形参改为指针 可以节省空间
//在形参前面加上const可以防止误操作
} int main()
{
//test08();
//test07();
s1.name = "zfx";
s1.age = 19;
s1.score = 88;
test09(&s1);
//struct grade* ps = &s1;
//cout <<"专业第一的名字"<< s1.name<<endl<<"age:"<<s1.age <<endl<<"score:"<<s1.score<< endl;
//cout << ps->name << " " << ps->age << " " << ps->score << endl;
system("pause");
return 0;
}

C++指针和结构体基础知识的更多相关文章

  1. 35深入理解C指针之---结构体基础

    一.结构体基础 1.定义:结构体大大加强了C的数据聚合能力,可以使得不同类型的数据进行结合 2.特征: 1).结构体可以使得不同类型的数据进行结合 2).结构体可以使用内置的数据类型,包括指针 3). ...

  2. C++结构体基础知识

    结构体 一.什么是结构体 假设我们要存储有关篮球运动员的信息,则可能存储Ta的姓名.工资.身高.体重.平均得分等,希望有一种数据格式可以将这些信息存放在一个单元中. 因此引入了结构的概念 结构是用户定 ...

  3. 嵌入式-C语言基础:通过结构体指针访问结构体数组

    #include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...

  4. 深入理解C指针之六:指针和结构体

    原文:深入理解C指针之六:指针和结构体 C的结构体可以用来表示数据结构的元素,比如链表的节点,指针是把这些元素连接到一起的纽带. 结构体增强了数组等集合的实用性,每个结构体可以包含多个字段.如果不用结 ...

  5. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  6. c语言指针与结构体

    #include <stdio.h> #include <stdlib.h> struct mydata { int num; ]; }; void main1() { /*i ...

  7. 【阅读笔记】《C程序员 从校园到职场》第七章 指针和结构体

    原文地址:让你提前认识软件开发(13):指针及结构体的使用 CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/2387299 ...

  8. 36深入理解C指针之---结构体的内存处理

    一.有关结构体的内存处理包括,结构体指针和结构体成员指针的内存分配.结构体成员的数据对齐.结构体的内存释放 1.定义:与自定义数据类型(结构体)有关的内存分配.大小和释放问题 2.特征: 1).用内存 ...

  9. C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值

    C++ 利用指针和数组实现一个函数返回多个值demo1 #include <iostream> using namespace std; int* test(int,int,int); i ...

随机推荐

  1. 使用allatori混淆代码

    引言 为了保密需要,我们开发出来的程序在实际部署之前,需要先将jar包的代码进行混淆,让用户使用反编译也无法获得源码. allatori就是这样一个混淆java jar包代码的工具. 操作步骤 Ste ...

  2. 初探webpack之编写loader

    初探webpack之编写loader loader加载器是webpack的核心之一,其用于将不同类型的文件转换为webpack可识别的模块,即用于把模块原内容按照需求转换成新内容,用以加载非js模块, ...

  3. 测试覆盖率 之 Cobertura的使用

    什么是代码覆盖率? 代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行. 为什么要测量代码覆盖率? 众所周知,测试可以提高软件版本的质量和可预 ...

  4. 【Electron】使用 build-tools 在 Windows 中编译 electron

    [Electron]使用 build-tools 在 Windows 中编译 electron 提前准备 预留好磁盘空间 Git 缓存目录:%UserProfile%/.git_cache ,大概有 ...

  5. Docker容器(container)详解 (转载自http://c.biancheng.net/view/3150.html)

  6. C# .NET ML.NET 机器学习 图像分类

    一. 准备工作 IDE是 VS2019.先下载好"resnet_v2_50_299.meta"这个文件,放入"C:\Users\jk\AppData\Local\Temp ...

  7. Cubieboard安装系统

    2013年买的一个小玩意. 一.硬件 1.1 相关资料 http://www.cubieforums.com http://cubie.cc 1.2 cubieboard1 1.3 无线网卡 水星 M ...

  8. 数仓选型必列入考虑的OLAP列式数据库ClickHouse(上)

    概述 定义 ClickHouse官网地址 https://clickhouse.com/ 最新版本22.4.5.9 ClickHouse官网文档地址 https://clickhouse.com/do ...

  9. curl-URL请求

    模拟HTTP请求,通过访问URL获取HTTP响应. 语法 curl [选项] 访问URL 选项 --connect-timeout SECONDS 设置最大请求时间. -C, --continue-a ...

  10. 【Windbg】记一次线程卡主的问题

    测试告诉我们定时任务没有执行了,排查相关日志,只有开始执行,没有执行结束.估计是什么地方卡主了. 所以dump分析日志 先检查一下加载情况 !eeversion 线程卡主了,先看线程 !runaway ...