c基础day8

目录

【2】指针数组

【3】函数

函数调用:

定义:

函数声明:

格式


本质是指针,指向数组 也叫行指针

数组指针大小==八字节

格式:存储类型 数据类型 (*指针变量名)【列数】

int a[2][3]={2,3,4,5,6,7};

int (*p)[3]=a;

//3 p+1移动一个数据单位(3个int)

打印行地址

加*降级打印列地址

地址

p[0]

p

*p

2

**p

*p[0]

p[0]+1

*p+1

3

*(*p+1)

*p[0]+1

p[0]+2

*p+2

4

*(*p+2)

*p[0]+2

p[1]

p+1

*(p+1)

5

*(*(p+1))

*p[1]

p[1]+1

*(p+1)+1

6

*(*(p+1)+1)

*p[1]+1

p[1]+2

*(p+1)+2

7

*(*(p+1)+2)

*p[1]+2

a和p本质不同,a是地址常量,不能为左值;p是指针变量

访问二维数组元素的地址:i行 j列 *(P+i)+j &p[i]+j

访问二维数组元素的值; *(*(P+i)+j) *(&p[i]+j)

遍历一个二维数组 int a[3][4]={};

int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*p)[4]=arr;

for(int i=0;i<3;i++)

{

for(int j=0;i<4;j++)

{

printf("%d\n",*(p[i]+j));

printf("%d\n",*(*(p+i)+j))

}

}

【2】指针数组

本质是数组,数组中存储的是地址,

数组指针的大小==元素个数*8

格式:存储类型 数据类型 *数组名【元素个数】

1、存放普通变量的地址

int a=10,b=20,c=30;

int *arr[3]={&a,&b,&c};

printf("%d\n",*arr[1]); //arr[1]访问的第二个内容,加*取内容

打印b的地址: arr[1] *(arr+1)

打印20

*arr[1]: arr[1]访问数组中第二个元素内容(&b),再加*,取内容(*&b)

*(arr[0]+1):arr[0]数组的第一个元素,+1到了第二个元素,再加*取内容

*(*(arr+1)): arr数组名是第一个元素的地址,arr+1是指针数组的第二个元素的地址,加*取指针数组的第二个元素的内容(&b),加*取变量的值

2、存放二维数组每一行第一列的地址

int a[3][4]={1,2,3,4,5,6,7,8,9};

int *p[3]={a[0],a[2],a[3]};

访问a[1][0]的地址

p[1]:指针数组的第二个元素(a[1]二维数组的第二行第一列的地址)

*(p+1): p+1指针数组的第二个元素的地址,*(p+1)指针数组的第二个元素de值==a[1]

访问a[1][0]的值: *p[1] **(p+1)

访问a[1][2]的地址:二维数组第二行第三列

p[1]+2: p[1]:指针数组的第二个元素(==a[1]地址==a[1][0]地址), p[1]+2(a[1][2])

*(p+1)+2: p+1:指针数组的第二个元素的地址,*(p+1)加*取指针数组的第二个元素的内容(==a[1]地址==a[1][0]地址), *(p+1)+2

访问a[1][2]的值: *(p[1]+2) *(*(p+1)+2)

3、存放字符串首地址

char *a[3]={"hello","world","asf"};

printf("%s\n",a[1]);

printf("%s\n",*(a+1));

printf("%c\n",*(*(a+1)+4));

//a[1]指针数组的第二个元素(world的首地址),a[1]+4('d'地址)

printf("%c\n",*(a[1]+4));

//a+1:指针数组的第二个元素的地址,加*取指针数组的第二个元素的内容(world的首地址)*(a+1)+4==>('d'地址)

命令行参数

argv :指针数组,存放命令行传递的字符串

argc ;命令行传递的字符串个数

printf("%s\n",argv[1]);

printf("%d\n",argc);

【3】函数

功能,参数,返回值:可有可无

函数调用:

函数名(实际参数);

定义:

数据类型 函数名(形式参数)

{

.//函数体

}

函数声明:

当函数写在主函数下边,需要提前声明

数据类型 函数名(形式参数);

格式:

数据类型需要和返回树脂类型一致,如果没有返回值,数据类型用void定义

1、 不需要参数,也不需要返回值

voidfun()

{

printf…………

)

intmain() //程序入口

{

fun(); //函数调用

return0;

}

2、不要返回值,需要参数

void fun(int n1,int n2)

{

int sum=n1+n2;

printf("%d\n",sum);

}

int main(int argc, char const *argv[])

{

int a=5,b=9;

fun(8,9);

fun(a,b);

return 0;

}

3、需要参数需要返回值

void fun(int n1,int n2)

{

int sum=n1+n2;

printf("%d\n",sum);

}

int main(int argc, char const *argv[])

{

int a=5,b=9;

fun(8,9);

fun(a,b);

return 0;

}

智慧工地解决方案旨在通过信息化手段提高建筑行业的监管水平和施工企业的管理效率。该方案响应了国家“十二五”规划中提出的全面提高行业信息化水平的要求,通过建立统一的建筑施工安全生产监管信息平台,解决政府监管部门面临的监管难题,如环境复杂、人员复杂、施工地点分散等。同时,它也帮助建筑企业应对劳动力流动大、成本上升、劳务纠纷等问题,通过信息化手段提升施工质量和安全管理。 智慧工地的整体思路是通过信息化建设,为政府职能部门提供监管手段,为施工企业提供管理支撑。这包括视频监控、实名制考勤、人员定位和免费WIFI上网等模块。视频监控系统能够实时监控工地现场,确保施工进度和安全;实名制考勤系统则确保合法用工,提高劳务管理的效率;人员定位系统有助于追踪工地人员,增强安全管理;免费WIFI上网则为工人提供娱乐和信息获取的途径,提高生活质量。 该方案的实施,不仅降低了政府的监管成本,提高了监管效率,还帮助建筑企业实时了解施工现场的安全和污染情况,掌握施工进度,降低管理成本,提升施工质量。此外,外来务工人员也能享受到信息化带来的便利,如通过智能终端免费上网,享受健康娱乐方式。 智慧工地项目的优势在于其专业的团队和丰富的实施经验。项目团队整合了全方位的资源,打造了行业信息化解决方案,并提供了个性化的行业信息化应用定制。此外,项目还依托于专业的运营团队和丰富的运营经验,提供了通信类系统和IT系统维护等服务外包。 最后,智慧工地项目通过政府牵头、企业投资、资源共享的合作模式,实现了普惠于民的目标。例如,武清区建委智慧工地项目通过视频监控和手机考勤系统,规范了建筑市场秩序,为保证工程质量奠定了基础,同时有效降低了监管成本,提高了建筑工地突发事件的应急处置能力。这种合作模式不仅提升了建筑行业的整体效率,也为构建美丽城市和实现中国梦做出了贡献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值