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

第一个程序

#include

#include

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

include

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没有足够的内存。

在C语言结构体中添加成员函数

我们在使用C语言的结构体时,经常都是只定义几个成员变量,而学过面向对象的人应该知道,我们定义类时,不只是定义了成员变量,还定义了成员方法,而类的结构和结构体非常的相似,所以,为什么不想想如何在C语言结 ...

【VS开发】【编程开发】【C/C++开发】结构体中的数组与指针的内存分配情况说明

[VS开发][编程开发][C/C++开发]结构体中的数组与指针的内存分配情况说明 标签:[VS开发] [编程开发] 主要是疑惑在结构体定义的数组的内存空间与指针动态分配的内存空间,在地址上连续性.以及 ...

C语言 结构体中的零长度数组

/* C语言零长度数组大小和取值问题 */ #include #include #include s ...

C语言 结构体中的成员域偏移量

//C语言中结构体中的成员域偏移量 #define _CRT_SECURE_NO_WARNINGS #include #include # ...

C语言结构体中的函数指针

这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础 本文地址:http://www.cnblogs.com/archimedes/p/function-pointer-in ...

c语言结构体中的冒号的用法

结构体中常见的冒号的用法是表示位域. 有些信息在存储时,并不需要占用一个完整的字节,   而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1   两种状态,   用一位二进位即可.为了节省 ...

C语言 结构体中属性的偏移量计算

//计算结构体偏移量 #include #include #include //详解:对于offscfof ...

C语言 结构体数组保存到二进制文件中

在项目中我定义了一个结构体数组,头文件如下: C/C++ code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组

原文链接:C语言结构体里的成员数组和指针 复制例如以下: 单看这文章的标题,你可能会认为好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Lar ...

随机推荐

最小生成树 kruskal算法 codevs 1638 修复公路

1638 修复公路  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description A地区在地震过后,连接所有村庄的公 ...

Struts2 默认Action和模块包含

在我们定义Action的时候会希望有一个默认的action在写错action时或者不写action时不至于报错 这里我只写一个简单的strut.xml例子 <?xml version=&quot ...

Recover Binary Search Tree

Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

Python2&period;6&period;6执行selenium自动化

系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...

Codeforces Round &num;370 &lpar;Div&period; 2&rpar;C&period; Memory and De-Evolution 贪心

地址:http://codeforces.com/problemset/problem/712/C 题目: C. Memory and De-Evolution time limit per test ...

UUID 生成(源代码编译)

根据定义,UUID(Universally Unique IDentifier,也称GUID)在时间和空间都是唯一的.为保证空间的唯一性,每个UUID使用了一个48位的值来记录,一般是计算机的网卡地址 ...

mq常用命令

IBM MQ常用命令   常用命令 创建队列管理器crtmqm –q QMgrName-q是指创建缺省的队列管理器删除队列管理器dltmqm QmgrName启动队列管理器strmqm QmgrNam ...

最大似然估计实例 &vert; Fitting a Model by Maximum Likelihood &lpar;MLE&rpar;

参考:Fitting a Model by Maximum Likelihood 最大似然估计是用于估计模型参数的,首先我们必须选定一个模型,然后比对有给定的数据集,然后构建一个联合概率函数,因为给定 ...

&lpar;轉載&rpar;sql server xml字段的操作

原文轉自:http://blog.csdn.net/hliq5399/article/details/8315373 另外可參考:https://msdn.microsoft.com/en-us/li ...

PowerShell中的配置文件

http://www.cnblogs.com/ceachy/archive/2013/03/01/PowerShell_Profile.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值