struct-c语言关于结构体的问题

问题描述

c语言关于结构体的问题

typedef struct Data
{
int arr[10];
int* p_low;
int* p_high;
} Data;

int main()
{
Data* data = NULL;
printf("%p
",data->arr);
printf("%p
",&(data->arr[1]));
printf("%p
",data->p_low); 为什么程序再这里就 crash 了????
printf("%p
",data->p_high);

return 0;

解决方案

知道了,是因为访问了空的指针.

解决方案二:

?C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题
1,比如:
struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof( A)=6, sizeof( B)=8,为什么?注:sizeof(short)=2,sizeof(long)=4
因为:“成员对齐有一个重要的条件,即每个......
答案就在这里:C语言中结构体对齐问题
----------------------

解决方案三:

知道了,是因为访问了空的指针.

时间: 2024-07-29 04:12:43

struct-c语言关于结构体的问题的相关文章

解析C语言中结构体struct的对齐问题_C 语言

首先看一下结构体对齐的三个概念值: 数据类型的默认对齐值(自身对齐): 1.基本数据类型:为指定平台上基本类型的长度.如在32位机器中,char对齐值为1,short为2,int,float为4,double为8: 结构体:其数据成员中默认对齐值最大的那个值. 2.指定对齐值:#pragma pack (value)时的指定对齐值value. 3.数据类型的有效对齐值:默认对齐值和指定对齐值中小的那个值. 有了这些值,我们就可以很方便的来讨论具体数据结构的成员和其自身的对齐方式.有效对齐值N是最

C语言中结构体struct编写的一些要点解析_C 语言

一.关于结构体的声明1.匿名声明.如: struct { int i,j; }point; 说明: 这段代码的含义是,声明一个无名(anonymous)的结构体,并创建了一个结构体变量point.如果这段声明是放在全局域(在任意函数(比如main函数)外)内,那么point内的变量将被初始化为默认值,换句话说,以这种方式声明结构体变量时就已经为它分配了内存空间. 适用于该结构体只需要产生一个变量!本例中,该匿名结构体将有且仅有point这个结构体变量! 不同的匿名结构体变量,类型是不同的!如 s

C语言中结构体(struct)的几种初始化方法_C 语言

本文给大家总结的struct数据有3种初始化方法      1.顺序      2.C风格的乱序      3.C++风格的乱序 下面通过示例代码详细介绍这三种初始化方法. 1)顺序 这种方法很常见,在一般的介绍C的书中都有介绍.顺序初始化的特点是: 按照成员定义的顺序,从前到后逐个初始化:允许只初始化部分成员:在被初始化的成员之前,不能有未初始化的成员. 示例: struct User oneUser = {10, "Lucy", "/home/Lucy"}; 2

c语言,对结构体中的整型数组进行赋值.....

问题描述 c语言,对结构体中的整型数组进行赋值..... c语言中,在结构体里声明整型数组,想对整型数组赋值,只能用循环吗?如果我想这样呢..... typedef struct Data { int arr[10]; }Data; int main() { Data data; data = (Data)malloc(sizeof(Data)); data->arr[10]={1,3,2,4,5,6,7,8,9,0}; . ... ... ... } 这样可以吗? 解决方案 绝对不可以.数组作

struct-C语言中结构体中的数组,不能直接赋值吗

问题描述 C语言中结构体中的数组,不能直接赋值吗 设有定义:struct{char mark[12];intnum1;double num2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是(C) (A) t1=t2; (B) t2.num1=t1.num1; (C) t2.mark=t1.mark;//mark为结构体中的数组,不能直接赋值?? (D) t2.num2=t1.num2; ?====如题参考答案说为结构体中的数组,不能直接赋值,为什么呢?那应该怎么赋值呢?求大侠指教 解决

c程序设计-C语言截结构体指针中的变量又是另一个结构体指针,怎么用,代码运行不了

问题描述 C语言截结构体指针中的变量又是另一个结构体指针,怎么用,代码运行不了 #include #include #include #include #define LIST_INIT_SIZE 100//线性表存储空间的初始分配量 #define LISTINCREMENT 10//线性表存储空间的分配增量 typedef struct { int No; char name[10]; }Student; typedef struct { Student *elem;//存储空间基址 int

c语言-一道C语言用结构体排序的题目 大神快来帮我理解下人家的代码~~~

问题描述 一道C语言用结构体排序的题目 大神快来帮我理解下人家的代码~~~ 描述 小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管.这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下: 1. 这根钢管一定要是仓库中最长的: 2. 这根钢管一定要是最长的钢管中最细的: 3. 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近). 相关的资料到是有,可是,手工从几百份钢管材料中选出符合要求的那根-- 要不,还是请你编

struct-C语言关于结构体赋值的问题,请教

问题描述 C语言关于结构体赋值的问题,请教 现在有一内存结构 如下: typedef struct { char classname[128]; char name[32]; unsigned int id; char X[128]; int X_len; }class_t; 现在有很多组数据要向该结构体赋值.但是 X[128] 这个变量是不可见字符 如0x20,0x03,0x04等登构成的. 那么我现在按照 class_t Temp[] = { {"One", "OneNa

c语言-求大神,C语言求 结构体

问题描述 求大神,C语言求 结构体 有5个学生,每个学生的数据包括学号.姓名.3门课的成绩,从键盘输入5个学生的数据,要求输出3门课总平均成绩,以及最高分的学生的数据. 要求用一个input函数输入3个学生数据,用一个average函数求总平均分,用max函数找出最高分的学生数据,总平均分和最高分的学生数据都在主函数中输出. 写到这里,报错太多,写不下去了 解决方案 首先,你的student结构体定义了没有.你有没有定义全局的stu,造成了冲突. 然后,你函数是不是和库函数冲突,比如max,在标