C语言结构体中字符数组的问题
来源:互联网 发布:mysql 跨服务器数据库 编辑:程序博客网 时间:2024/04/27 12:02
第一个程序:
#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没有足够的内存。由于水平有限,写的不好,希望大家能看得懂,多谢指教!
- C语言结构体中字符数组的问题
- C语言,结构体中字符串的声明(采用字符指针还是字符数组)
- 关于C语言,字符数组中越界的两个问题
- 关于c语言中字符数组的'\0'问题
- C-关于结构体中字符数组的单个赋值
- 关于C语言的字符数组问题
- C语言中字符数组的大小
- 【C语言基础】结构体数组的易错问题
- c语言结构体数组的应用问题
- C语言结构体数组赋值问题
- c语言结构体中动态数组的使用
- C语言:字符串、结构体中关于数组的几个问题
- c中字符数组的问题
- c语言中字符数组和字符指针的区别
- c语言中字符指针与字符数组的区别
- C语言中字符指针数组输入初始化问题
- c语言中,字符数组与字符串赋值问题
- C语言结构体对齐存储问题以及给结构体中的数组的赋值问题
- iOS各种权限判断(相机,相册,定位,录音)
- Ubuntu下添加开机启动脚本
- 安装mysql-python错误python version2.7 required,which was not found in the registry.
- 1.angular-phonecat环境搭建
- 数据结构-树
- C语言结构体中字符数组的问题
- 黑马程序员--self使用总结和注意事项
- 如今仍在工作的12名最“屌”的程序员
- OnGestureListener,OnTouchListener这俩貌似不能分开,否则前者不起作用
- C++_运算符重载的注意事项
- List of devices attached 下无设备列表
- Android -- 使用UncaughtExceptionHandler捕获全局异常
- IOS Block使用(一)
- Swift 2.4.0 release