c结构体赋值_浅谈Cpp中的指针与结构体

1.const char*str不能修改内存

可以来接受字符串字面常量

substr的字符串实现机制,利用const char*str可直接输入初始化值

让我们来举个例子

#define _CRT_SECURE_NO_WARNINGS//因为一些老的.c文件使用了strcpy,scanf等不安全的函数必须在表头

#include

#include//strcopy实现机制

using namespace std;

const char*substr(const char*, int, int);//返回类型与定义一致

int main()

{

    const char* str;//定义可改字符指针常量

    int begin, end;

    cin >> begin >> end;

    cout<//山大小李是个好男孩

}

const char*substr(const char* str1, int a, int b)

{

    char* ret;//定义char类型指针来存储值

    int len = strlen(str1);

    if (a<1 || b<1 || a>len || b>len)//简单的情况罗列排除

    return nullptr;//直接返回空指针

    ret = new char[len - a + 2];//关联数组

    strcpy(ret, str1 + a - 1);//将str+a-1地址值之后的全部进入ret

    ret[b - a + 1] = '\0';//补成字符串结束识别符

    return ret;

}

效果::

1db1922b352f5a4453f0a03d87de8b57.png

2.利用引用变量int &rodents=rats

可使不同标识符指代同一内存空间(取地址相同)

**** 本名和别名必须是同一类型

引用变量必须按定义时初始化(紧跟!!!)

3.swap函数的实现方式

  a.  指针类型

  b. 引用类型(int&,int&)引用类型传参按引用传参(不用按指针取地址)

骚操作:直接等价变量(避免只修改形参的麻烦)

            不用按指针解引用

     引用类型实质

int*p;           int a;

int a;            int&b=a;

p=&a;            b<=>a

(*P)<=>a

4.结构体struct

struct作用受到块作用域的限制

结构体后一定加上分号;而自定义类型名不加分号

当声明变量后自动分配一大块内存,按照不同的方式解读(优势点)

系统希望int类型变量的首地址是四的倍数,故内存不一定是各变量地址总和

数组和字符串不能赋值(得用strcopy)

而结构体可以赋值

可令结构体类型名下的两个变量相等

cin不能输入带空格内容

结构体中指针或动态数组变量关联值会同时修改

cba584c460c0d92f0b7a3260507c93b6.png

输入字符串利用cin.getline实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值