学习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. [笔记] 期望概率DP

    线性高斯消元 模型概述 转移不是 DAG 的期望 DP. 成环的转移有特殊性质,如:只总父亲/根/儿子转移,只从左右转移-- 处理方式 以只从父亲和儿子转移的期望 DP 为例: \[f(x)=p\cd ...

  2. Oracle 常用运维命令整理

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 一.oracle建库与删库命令 (1)oracle11g ...

  3. Mysql limit 优化优化

    MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心! MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新 ...

  4. 设置VisualStudio以管理员身份运行

    以vs2013为例 vs右键属性 ----- 找到目标位置如下 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\ID ...

  5. 108_Power Pivot购物篮分析分组GENERATE之笛卡尔积、排列、组合

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 昨天在看论坛帖子时候(帖子),看到一个关于SKU组合的问题,有很多M大佬都给出了处理方案,于是想用dax也写一个 ...

  6. 阿里云OSS + PicGo搭建图床

    1.阿里云 OSS 登录阿里云,进入控制台. 打开侧边栏,找到对象存储 OSS. 右侧找到 Bucket 管理,点击创建 Bucket. 根据引导配置 Bucket 其他同城冗余存储和版本控制等增值服 ...

  7. Dockerfile 使用 SSH

    如果在书写 Dockerfile 时,有些命令需要使用到 SSH 连接,比如从私有仓库下载文件等,那么我们应该怎么做呢? Dockerfile 使用 SSH Dockerfile 文件配置 为了使得 ...

  8. 关于我学git这档子事(4)

    ------------恢复内容开始------------ 当本地分支(main/dev)比远程仓库分支(main/dev)落后几次提交时 先: git pull 更新本地仓库 再 git push ...

  9. Vulhub靶场搭建教程

    Vulhub靶机环境搭建 Vulhub地址: Vulhub下载地址 一.所需环境 1.Ubuntu16.04 2.最新版本Docker 二.安装之路 1.下载Ubuntu16.04下载地址(迅雷下载6 ...

  10. cloudwu/coroutine 源码分析

    1 与其它协程库使用对比 这个 C 协程库是云风(cloudwu) 写的,其接口风格与 Lua 协程类似,并且都是非对称 stackful 协程.这个是源代码中的示例: #include " ...