2.20学习内容:js数组

1、什么是数组

var myarr=new Array(); //定义数组
 myarr[0]=80; 
 myarr[1]=60;
 myarr[2]=99;
 document.write("第一个人的成绩是:"+myarr[0]);
 document.write("第二个人的成绩是:"+myarr[1]);
 document.write("第三个人的成绩是:"+myarr[2]);

2、创建数组:

创建数组语法:

var myarray=new Array();

 我们创建数组的同时,还可以为数组指定长度,长度可任意指定。

var myarray= new Array(8); //创建数组,存储8个数据。 

注意:
1.创建的新数组是空数组,没有值,如输出,则显示undefined。
2.虽然创建数组时,指定了长度,但实际上数组都是变长的,也就是说即使指定了长度为8,仍然可以将元素存储在规定长度以外。

3、数组赋值的三种方法

方法一:

var myarray=new Array(); //创建一个新的空数组
myarray[0]=66; //存储第1个人的成绩
myarray[1]=80; //存储第2个人的成绩
myarray[2]=90; //存储第3个人的成绩
myarray[3]=77; //存储第4个人的成绩
myarray[4]=59; //存储第5个人的成绩

注意:数组每个值有一个索引号,从0开始。

方法二:

var myarray = new Array(66,80,90,77,59);//创建数组同时赋值

方法三:

 var myarray = [66,80,90,77,59];//直接输入一个数组(称 “字面量数组”)

4、向数组增加一个新元素

myarray[5]=88; //使用一个新索引,为数组增加一个新元素

5、使用数组元素

第一个人的成绩表示方法:myarray[0]
第三个人的成绩表示方法: myarray[2]

6、数组属性length

语法:

myarray.length; //获得数组myarray的长度
var arr=[55,32,5,90,60,98,76,54];//包含8个数值的数组arr 
document.write(arr.length); //显示数组长度8
document.write(arr[7]); //显示第8个元素的值54

7、二维数组(不是特别明白)

一维数组,我们看成一组盒子,每个盒子只能放一个内容。

一维数组的表示: myarray[ ]

二维数组,我们看成一组盒子,不过每个盒子里还可以放多个盒子。

二维数组的表示: myarray[ ][ ]

注意: 二维数组的两个维度的索引值也是从0开始,两个维度的最后一个索引值为长度-1。 

1. 二维数组的定义方法一

var myarr=new Array();  //先声明一维 
for(var i=0;i<2;i++){   //一维长度为2
   myarr[i]=new Array();  //再声明二维 
   for(var j=0;j<3;j++){   //二维长度为3
   myarr[i][j]=i+j;   // 赋值,每个数组元素的值为i+j
   }
 }


注意: 关于for 循环语句,请看第四章4-5 。

将上面二维数组,用表格的方式表示:

2. 二维数组的定义方法二

var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3]]

3. 赋值

myarr[0][1]=5; //将5的值传入到数组中,覆盖原有值。

说明: myarr[0][1] ,0 表示表的行,1表示表的列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C语言网络编程使用epoll实现通过网卡1(IP: 192.168.1.1)的指定端口(12345),转发到另一个网卡(IP: 192.168.2.1)下的多个客户端的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <sys/epoll.h> #define MAX_EVENTS 10 #define BUFFER_SIZE 1024 int main() { int server_fd, client_fd, epoll_fd; struct sockaddr_in server_addr, client_addr; struct epoll_event event, events[MAX_EVENTS]; char buffer[BUFFER_SIZE]; // 创建服务器端套接字 server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd == -1) { perror("Failed to create socket"); exit(EXIT_FAILURE); } // 设置服务器端地址 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("192.168.1.1"); server_addr.sin_port = htons(12345); // 绑定服务器端套接字到指定地址和端口 if (bind(server_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("Failed to bind"); exit(EXIT_FAILURE); } // 监听连接请求 if (listen(server_fd, SOMAXCONN) == -1) { perror("Failed to listen"); exit(EXIT_FAILURE); } // 创建epoll实例 epoll_fd = epoll_create1(0); if (epoll_fd == -1) { perror("Failed to create epoll"); exit(EXIT_FAILURE); } // 将服务器端套接字添加到epoll实例中 event.events = EPOLLIN; event.data.fd = server_fd; if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, server_fd, &event) == -1) { perror("Failed to add server socket to epoll"); exit(EXIT_FAILURE); } while (1) { int num_events = epoll_wait(epoll_fd, events, MAX_EVENTS, -1); if (num_events == -1) { perror("epoll_wait failed"); exit(EXIT_FAILURE); } for (int i = 0; i < num_events; i++) { if (events[i].data.fd == server_fd) { // 有新的连接请求 socklen_t client_addr_len = sizeof(client_addr); client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &client_addr_len); if (client_fd == -1) { perror("Failed to accept connection"); exit(EXIT_FAILURE); } // 设置客户端套接字为非阻塞模式 int flags = fcntl(client_fd, F_GETFL, 0); fcntl(client_fd, F_SETFL, flags | O_NONBLOCK); // 将客户端套接字添加到epoll实例中 event.events = EPOLLIN | EPOLLET; event.data.fd = client_fd; if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, client_fd, &event) == -1) { perror("Failed to add client socket to epoll"); exit(EXIT_FAILURE); } } else { // 客户端套接字上有数据可读 int n = 0; while ((n = read(events[i].data.fd, buffer, BUFFER_SIZE)) > 0) { // 将数据转发到另一个网卡下的多个客户端 // 例如,将数据发送到客户端1(192.168.2.10,端口:2000) struct sockaddr_in client1_addr; memset(&client1_addr, 0, sizeof(client1_addr)); client1_addr.sin_family = AF_INET; client1_addr.sin_addr.s_addr = inet_addr("192.168.2.10"); client1_addr.sin_port = htons(2000); sendto(events[i].data.fd, buffer, n, 0, (struct sockaddr*)&client1_addr, sizeof(client1_addr)); // 将数据发送到客户端2(192.168.2.20,端口:2001) struct sockaddr_in client2_addr; memset(&client2_addr, 0, sizeof(client2_addr)); client2_addr.sin_family = AF_INET; client2_addr.sin_addr.s_addr = inet_addr("192.168.2.20"); client2_addr.sin_port = htons(2001); sendto(events[i].data.fd, buffer, n, 0, (struct sockaddr*)&client2_addr, sizeof(client2_addr)); } if (n == 0) { // 连接已关闭 close(events[i].data.fd); } } } } close(server_fd); close(epoll_fd); return 0; } ``` 请注意,以上代码仅是一个简单的示例,实际情况可能需要根据具体需求进行更复杂的逻辑处理和错误处理。网络编程涉及到众多细节,确保你对网络编程的基本知识有一定的了解,并参考相关文档和示例代码进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值