[指针一]结构体数组作为形参传递,下标访问和指针访问使用该结构体
来源:互联网 发布:淘宝怎么看好友动态 编辑:程序博客网 时间:2024/06/14 07:55
在通常结构化编程中,通常涉及到数据做成和传递,我们通过参数传递一块内存区域的指针到函数中,希望在函数中做成指定格式的数据,放在传递到函数的指针所指向的内存区域,在主函数中通过传递到函数中的指针访问该内存。
在访问该内存区域时,通常有两种方法,一种是通过下标的方法访问指针中数据,另一种方法是通过指针的方法。
例如:
typedef struct{
int cout;
char path[256];
char filename[64];
}info_s;
1.下标访问:定义结构体数组info_s data[20],可以通过下标访问data[0].cout,data[0].path,data[0].filename。
2.指针访问:定义结构体数组info_s data[20],定义结构体指针变量info_s *ptr,该指针指向结构体数组ptr = data,通过指向该结构体数组的指针ptr来访问结构体数组中的数据。ptr->cout;ptr->path,ptr->filename,访问的是data[0]中的数据,ptr++指向data[1],通过ptr指向的移动来依次访问data中数据。
例子1:下标访问
#include <stdio.h>
#include <string.h>
typedef struct{
int cout;
char path[256];
char filename[64];
}info_s;
void get_information(void * data)
{
info_s *info = (info_s *)data;
int i = 0;
for(i = 0; i< 20;i ++)
{
info[i].cout = i+1;
if(i%2)
{
memcpy(info[i].path,"/home/imx/shares",sizeof("/home/imx/shares"));
memcpy(info[i].filename,"imx",sizeof("imx"));
}
else
{
memcpy(info[i].path,"/home/test/shares",sizeof("/home/test/shares"));
memcpy(info[i].filename,"test",sizeof("test"));
}
}
}
int main()
{
info_s info[20];
int i = 0;
memset(info,0,sizeof(info));
get_information(info);
for(i = 0;i < 20;i++)
{
printf("count:%d\n",info[i].cout);
printf("path:%s\n",info[i].path);
printf("name:%s\n\n\n",info[i].filename);
}
return 0;
}
例子1:指针访问
#include <stdio.h>
#include <string.h>
typedef struct{
int cout;
char path[256];
char filename[64];
}info_s;
void get_information(void * data)
{
info_s *info = (info_s *)data;
int i = 0;
for(i = 0; i< 20;i ++)
{
info->cout = i+1;
if(i%2)
{
memcpy(info->path,"/home/imx/shares",sizeof("/home/imx/shares"));
memcpy(info->filename,"imx",sizeof("imx"));
}
else
{
memcpy(info->path,"/home/test/shares",sizeof("/home/test/shares"));
memcpy(info->filename,"test",sizeof("test"));
}
info ++;
}
}
int main()
{
info_s info[20];
int i = 0;
memset(info,0,sizeof(info));
get_information(info);
for(i = 0;i < 20;i++)
{
printf("count:%d\n",info[i].cout);
printf("path:%s\n",info[i].path);
printf("name:%s\n\n\n",info[i].filename);
}
return 0;
}
- [指针一]结构体数组作为形参传递,下标访问和指针访问使用该结构体
- 结构体指针访问结构体数组
- 数组,结构体,结构体数组的差别 (使用指针访问元素时)
- C语言结构体内含有数组,该结构体作为参数传递时需用指针,否则对数组的修改不会被记录
- 结构体指针和数组
- C语言结构体之指针访问
- 结构体指针间接访问成员值
- 《IOS_C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)
- 《IOS_作业C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)
- 结构体数组和结构体指针
- 结构体指针和结构体数组
- 一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式
- 结构体数组指针
- 结构体指针数组
- 结构体、结构指针作为函数参数
- 指针与数组--指针访问与下标访问
- 如何正确使用指针(指针作为输出型参数)与结构体指针作为函数参数
- Perl传递结构体指针
- 【读书笔记】java语言与面向对象程序设计5:工具类与算法
- ReportStudio入门教程(六十二) - JS-可变宽度的图表
- 初识ASP.NET---ASP.NET中验证控件的用法
- 统计空格、制表符和换行符以及ff,fl,fi
- 防弹玻璃的奥妙
- [指针一]结构体数组作为形参传递,下标访问和指针访问使用该结构体
- 标量的数组和矩阵乘方
- 【180网站】50-56
- quick sort
- 【leetcode】sort list(python)
- 【C】用递归法将一个数字转换成字符串
- 从在QT中找不到QVBOX类到QT4与QT3的兼容
- 防弹你DIY超级
- hdu 3594 强连通好题仙人掌图,对自己的tarjan模板改下用这个