C语言结构体中字符数组的问题

2023-11-05

第一个程序:

#include <stdio.h>

#include <string.h>

typedef struct student

{

    char name[10];

    int scores;

}Stu_st,* Stu_pst;

int main(void)

{

    struct student stu1={"David",100};

    strcpy(stu1.name,"Jim");//此处如果用stu2->name="Jim";则会出错

    printf("%s,%d\n",stu1.name,stu1.scores);

    return 0;

}//运行的结果为Jim,100

 

第二个程序:

#include <stdio.h>

#include <string.h>

typedef struct student

{

    char *name;

    int scores;

}Stu_st,* Stu_pst;

int main(void)

{

    struct student stu1={"David",100};

    stu2->name="Jim";//此处如果用strcpy(stu1.name,"Jim");则会出错

    printf("%s,%d\n",stu1.name,stu1.scores);

    return 0;

}//运行的结果为Jim,100

 

分析:以上两个程序的差别很小,在定义结构体第一个变量时候一个用的是char name[10];另一个用char * name;当name为数组的时候,在给结构体分配内存的时候已经给name分配了固定大小的内存;当name为char类型的指针时,只分配了此指针的内存。所以在第一个程序之所以不能用stu2->name="Jim";是因为这条语句改变了那么数组的地址,而之前name数组已经分配好了内存。第二个程序之所以不能用strcpy(stu1.name,"Jim");是因为name没有足够的内存。由于水平有限,写的不好,希望大家能看得懂,多谢指教!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言结构体中字符数组的问题 的相关文章

  • Proteus元件库元件名称及中英对照

    Proteus元件库元件名称及中英对照 AND 与门 ANTENNA 天线 BATTERY 直流电源 BELL 铃 钟 BVC 同轴电缆接插件 BRIDEG 1 整流桥 二极管 BRIDEG 2 整流桥 集成块 BUFFER 缓冲器 BUZ
  • 油猴脚本怎么那么难找教程?

    号称好用 一个sleep我翻了全网一个小时 function use strict function go 定义函数 document querySelector video playbackRate 16 window setTimeou
  • Unity3D集成腾讯语音GVoice SDK

    简述 我们项目中用到了实时语音功能 在最初语音 SDK 技术选型的时候测试过融云 声网和腾讯的 GVoice 融云和声网我都在我们项目中使用过 但是效果都不如王者荣耀游戏中的实时语音效果 这两天好好研究了一下腾讯的 GVoice 终于成功集
  • 永恒之蓝漏洞利用及攻击

    一 基础知识介绍 1 何为永恒之蓝 永恒之蓝 Eternal Blue 爆发于2017年4月14日晚 是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限 以此来控制被入侵的计算机 甚至于2017年5月12日 不法分子通过改造
  • 如何从github拉取代码(入门篇)

    一 安装 Git Git 可以在多种操作系统上使用 包括 Windows macOS 和 Linux 以下是在 Windows 上安装 Git 的步骤 访问 Git 的官方网站 https git scm com downloads 在网站
  • POJ - 3253 Fence Repair(哈夫曼树,优先队列)

    题目 Farmer John wants to repair a small length of the fence around the pasture He measures the fence and finds that he ne

随机推荐

  • 信号与槽的详解

    以前也写过这方面的知识 但是因为都是参照着别人的文章来写的 就是很虚 很浮夸 今天下午我又好好看了一下这方面的知识 查阅了一些资料 现在来写写我自己的发现 接下来分为四大小点 一 信号和槽的基本认识 当对象的内部状态发生改变 信号就被发射
  • 20220906工作问题学习记录

    今天 在解决一个项目中的BUG问题的时候 遇到了需要过滤接口返回字段数据中的换行符 n 这里顺便 需要对php语言中的str replace 函数进行使用 做一下学习记录 由于原字符串是使用 来进行包裹的 所以 在使用str replace
  • C#之Console输入输出实用的

    潘鹏在CSDN上原创 如其他网站转载请注意排版和写明出处 1 Console Beep 发出蜂鸣声 2 Console Title 控制台的标题 3 Console Write 输入 4 Console WriteLine 输入 遇ente
  • Linux下GDB调试程序

    1 什么是GDB GDB 全称 GNU Debugger 是GNU工程师为GNU操作系统开发的调试器 它可以用于调试C C Objective C Pascal Ada等语言编写的程序 2 GDB的使用条件 在程序编译的时候 添加响应的调试
  • Linux: ARM32各CPU模式下栈配置

    文章目录 1 前言 2 背景 3 ARM32 中断向量表 和 中断处理流程 3 1 ARM32 中断向量表 3 2 ARM32 中断处理流程 4 ARM32 各CPU模式下的栈配置 4 1 SVC模式下各CPU栈配置 内核栈配置 4 1 1
  • java中score用法,Lucene 8.x 使用 FunctionScoreQuery 实现自定义的文档评分

    在使用不管是 Lucene 或者 ElasticSearch 进行全文搜索中 检索到文档很简单 但是把搜索者最想要的结果排在最前面 这是最具挑战性的 我们举个最简单的例子 假设我们需要做一个博客搜索 当我们用 Lucene 默认的匹配度进行
  • 怎么看服务器是中毒了还是被攻击?

    服务器是企业或个人重要的信息系统设备之一 它的正常运行对于企业和个人的业务和日常生活都非常重要 然而 服务器也很容易成为黑客攻击的目标 一旦遭到攻击 会对系统的正常运行和数据安全产生严重影响 在服务器出现异常情况时 如何判断是中毒还是被攻击
  • JSTL——jstl标签简介

    文章目录 1 jstl简介以及jstl标签库导入 2 set标签 3 if标签 4 choose when标签 5 forEach标签 1 jstl简介以及jstl标签库导入 1 jstl全称Jsp Standarded Tag Libra
  • VTK安装与配置补充

    本文参考 https blog csdn net Robin Chou article details 50476007 1 CMake的安装 CMake安装是用来对VTK编译前的配置工作 此博客中使用的是CMake2 8 CMake的下载
  • 【毕业设计】基于红外热释电的房间人数计数系统 - 单片机 物联网嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4 1 PIR传感器 4 2 mlx90614红外传感器 5 部分核心代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新
  • SD卡/TF卡简记

    文章目录 MicroSD卡与SD卡关系与区别 对比NM卡 XQD卡 CFexpress卡 SD规格标识 FAQ 拍摄1080p或2k视频需要什么速度的sd卡 拍摄4k视频需要什么速度的sd卡 拍摄8k视频需要什么速度的sd卡 MicroSD
  • BH1750 传感器实战教学 —— 驱动移植篇

    前言 上一篇 BH1750 的实战教学我们说明的实际应用中传感器的硬件设计 BH1750 传感器实战教学 硬件设计篇 我们提到过在本次使用的芯片为 51 内核 I2C 通讯驱动实现与 STM32 上还是有很大区别的 对于我们来说 已经掌握了
  • 【python数据分析】jupyter notebook常用快捷键

    相信不少人在学习python数据分析会用到jupyter notebook 而作为一个刚刚接触的插件 往往不会使用快捷键加快我们的学习或开发 这里就给大家分享一下jupyter notebook常用快捷键 总的来说 分为2种模式 一 命令模
  • 几个常用的匹配html标签的正则

    1 去除 a 标签 保留中间的文字 原字符串 a href www baidu com 点我跳转百度 a 正则 lt a A s gt gt 替换为 1 结果 点我跳转百度 2 去除指定标签及其里面的内容 原字符串 span style c
  • OP-TEE是如何使用RPMB来实现可信存储的

    1 目的 写这篇博客主要是为了记录这段时间的成果 方便自己和有需要的人理解可信存储 以及OP TEE是如何实现可信存储的 最近在重构公司的可信存储的实现 主要是想将Trust Storage的主要逻辑实现从user space挪到kerne
  • 互联网+SC联盟解决大学生五大难题!

    这是一个历史性的时刻 互联网 SC联盟 震撼面世 小编能想到的类似事件有宇宙大爆炸 恐龙灭绝 第一个人类诞生 中国四大发明 天呐 相信你也迫不及待地想了解了 赶紧阅读下文 来做第一个见证人吧 一 SC是什么意思 Study and Care
  • unity3D基础操作之01--unity3d窗口界面介绍

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 最常使用5种窗口 1 Scene场景编辑窗口 2 Game游戏运行窗口 需要注意的是 3 Hierarchy场景物体列表窗口 4 Project项目资源列表窗口 需
  • 【多线程操作】线程池模拟实现

    目录 一 线程池的作用 二 线程池的模拟实现 1 线程模块 Thread hpp 2 线程锁模块 LockGuard hpp 3 任务模块 Task hpp 4 线程池核心 ThreadPool hpp 一 线程池的作用 线程池是用来维护多
  • linux系统之字符设备驱动——点灯

    linux系统之字符设备驱动 点灯 1 原理图 底板 核心板 RGB RED GPIOA28 RGB GREEN GPIOE13 RGB BLUE GPIOB12 2 驱动代码 驱动代码程序 led dev c Author your na
  • C语言结构体中字符数组的问题

    第一个程序 include