一、结构体变量作为函数参数
输出得不到想要的结果
-
#include <stdio.h>
-
#define LEN 10
-
struct stu
-
{
-
char *Name;
-
float Score;
-
} my;
-
-
Value (struct stu t)
-
{
-
-
t.Name = "zhansan";
-
t.Score = 93.6;
-
}
-
-
int main()
-
-
{
-
//如果不加这一句那么my.Name就是一个空指针,所以其执行时没法读取
-
//my.Name=(char *)malloc(LEN*sizeof(char));
-
Value(my); // 局部变量里的值是没法传回来的
-
printf("Name = %s\n",my.Name);
-
printf("%f\n",my.Score);
-
return 0;
-
}
二、结构体数组变量做函数参数
能够实现变量的替换
-
#include <stdio.h>
-
-
typedef struct stu
-
{
-
char *Name;
-
float Score;
-
}STU; // 这样是用 STU 就能定义结构体了
-
-
Value (STU t[2])
-
{
-
-
t[0].Name = "zhangsan";
-
t[0].Score = 93.6;
-
-
t[1].Name = "lisi";
-
t[1].Score = 89.5;
-
-
}
-
-
int main()
-
-
{
-
-
STU my[2] = {{"hehe", 79.7},{"dada", 65.5}}; //赋初值
-
Value(my); //调用函数
-
printf("Name = %s\n",my[0].Name); //输出值发现值改变
-
printf("%f\n",my[0].Score);
-
-
printf("Name = %s\n",my[1].Name);
-
printf("%f\n",my[1].Score);
-
return 0;
-
}
三、结构体指针变量做函数参数
能得到传递的结果
-
#include <stdio.h>
-
-
#define LEN 10
-
typedef struct stu
-
{
-
char *Name;
-
float Score;
-
} STU;
-
-
Value (STU *t)
-
{
-
t->Name = "zhangsan";
-
(*t).Score = 99.5; //(*t).Score和t->Score作用是一样的
-
-
}
-
-
int main()
-
{
-
STU *my;
-
-
my = (STU*)malloc(LEN * sizeof(STU)); //给结构体指针变量分配内存
-
// 要不然会报错的
-
Value (my);
-
printf("Name = %s\n",my->Name);
-
printf("%f\n",my->Score);
-
-
return 0;
-
}
四、下面是一些注意事项的讲解,不能往一个没有指向的指针里边
写入或者读取数值
/************************************《先分配内存单元,再给指针赋值》******************************************
下面的定义方法是正确的
int *a=(int *)malloc(n*sizeof(int)); // 定义指针,并分配内存单元
*a = 4; // 将值存入到指针a所指向的内存单元中
// 下面的定义方法就会出错
int *a; // 定义指针,没有分配内存单元
*a = 4; // 此时系统不知道该将4存入到哪个内存单元
(因为指针未指向具体的内存单元(此时称该指针为野指针)),所以执行的时候会出错(编译没错)
***************************************************************************************************************/
/*************************************《a原来是float型的,强制转换成int型》************************************
问问题不要断章取义。*p=(int *)a这个不是一个完整的语句,前面后面都可能省略内容。
float b=3.14,*a=&b;
int *p=(int *)a; //这个才是完整的,前面有int *,后面有分号。表示将指针a的类型转换为整型指针再赋给p。
***************************************************************************************************************/
阅读(1384) | 评论(0) | 转发(0) |