C-循环,获取数组地址的几种方法

程序的调试的作用:

跟踪CPU执行代码的步骤

监视变量的值在程序执行的时候是如何变化的

do-while 和 while

在实际的开发中, do-while比较少用

因为就算循环无论如何要至少执行一次的时候,while也可以搞定

循环的情况一共就两种:

1.循环次数确定的循环

2.循环次数不确定的循环,但是确定了循环继续活着结束的条件

对于一个一位数组来说

1.获取 a[i]的地址的几种方法

1  &a[i]  // 取地址符
1 a+i  // 数组名就是数组首地址 
1  int *p = a;
2  p+i;     //  指针法

2.获取 a[i]的值的几种方法

(1) a[i]

(2) *(a+i)

(3) int *p = a;

*(p+i);

(4) *(&a[i])

若一个数组的元素值为指针,则这个数组可以称之为 指针数组

指针数组是一组有序的指针的集合.

所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量.

一般声明形式:

1 int *array[10];

使用:

1 int a = 3, b = 4,  c = 5;
2 int *pa[3] = {&a, &b, &c};

其中

pa[0]    a的地址

pa        数组的首地址 = &pa[0]

头脑风暴

 1 int arr[2][2] = {1,2,3,4};
 2 int *pa[2] = {arr[0], arr[1]};
 3
 4 printf("arr[0][0] = %p\n", &arr[0][0]);
 5 //arr[0][0]的地址,arr的首地址
 6 printf("arr[0][0] = %d\n", arr[0][0]);
 7 //arr[0][0]的值
 8 printf("pa[0] = %p\n", pa[0]);
 9 //pa[0]的值,即指针pa[0]所指向的地址,所存放的地址
10 printf("*pa[0] = %d\n", *pa[0]);
11 //pa[0]所指向的地址的内容
12 printf("**pa = %d\n", **pa);
13 //指针数组pa的首地址(即pa[0]的地址)对应的值--即pa[0]存放的内容--即arr[0]的地址所对应的值
14 printf("**(pa+1) = %d\n", **(pa+1));
15 //指针数组pa的首地址+1(非数量1,地址意义上的1)(即pa[1]的地址)对应的值--即pa[1]存放的内容--即arr[1]的地址所对应的值

 1  int a = 3, b = 4, c = 5, d = 6;
 2     int *pa[4] = {&a, &b, &c, &d};
 3
 4     printf("a = %d\n", a);
 5        //a的内容
 6     printf("&a = %p\n", &a);
 7 //a的地址
 8     printf("pa = %p\n", pa);
 9 //数组的首地址, &pa[0]
10     printf("pa[0] = %p\n", pa[0]);
11 //数组的第1个元素, a的地址
12     printf("*pa[0] = %d\n", *pa[0]);
13 //数组的第1一个元素所指向的内存地址所对应的内容
14     printf("*(&a) = %d\n", *(&a));
15 //a的内容
16     printf("**pa = %d\n", **pa);
17 //a的内容

指针变量之间的算术运算

注意: 只有指向同一数组的两个指针变量之间才能进行运算,否则运算毫无意义

实质是地址之间在进行运算!

(pointer2地址值-pointer1地址值)/sizeof(数据类型)

用法:

1.判断两个指针变量指向的元素是否连续

2.判断两个指针变量之间相隔几个元素

例:

1 int a[5] = {1,2,3,4,5}
2 int *p = a;
3 int *p1 = &a[3]
时间: 2024-10-10 08:52:07

C-循环,获取数组地址的几种方法的相关文章

C#获取MAC地址的几种方法

首先需要用到的一些方法和类: public enum NCBCONST { NCBNAMSZ = 16, MAX_LANA = 254, NCBENUM = 0x37, NRC_GOODRET = 0x00, NCBRESET = 0x32, NCBASTAT = 0x33, NUM_NAMEBUF = 30, } [StructLayout(LayoutKind.Sequential)] public struct ADAPTER_STATUS { [MarshalAs(UnmanagedTy

获取IP地址的几种方法

根据ip获取地址的几种方法 1.调用新浪IP地址库 <script type="text/javascript" src="js/jquery.js"> </script> <script type="text/javascript" src="js/jquery.cityselect.js"> </script> <script type="text/javas

Java获取ip地址的几种方法

以下内容介绍下java获取ip地址的几种思路. 1.直接利用java.net.InetAddress类获取,不过这种方法只在windows环境下有效,在linux环境下只能获取localhost地址(即/etc/hosts文件内容) 代码如下: 1 import java.net.InetAddress; 2 3 /** 4 * This method works well in windows system. 5 * In Linux system it returns 127.0.0.1 t

Python windows下获取MAC地址的一种方法

我最近有一个项目,使用Python在win32下开发一个COM组建,该COM组建其中一个方法是获取本地电脑的MAC地址. 需求很简单,虽然我是Python新手中的新手,但我还是会使用搜索引擎进行搜索. 百度一下,发现大部分都介绍使用import UUID获取MAC地址,或使用os.popen("ipconfig /all")的方式获取.而后者容易受到操作系统中英文环境影响. 如这篇文章:http://www.cnblogs.com/Jerryshome/archive/2011/11/

liunx下获取网卡地址的几种方法

CentOS Linux release 7.2.1511 (Core)系统获取网卡ipifconfig em1|awk 'NR==2 {print $2}'ifconfig em1|sed -n '2p'|cut -d ' ' -f 10ifconfig em1|sed -n "s/^.*inet \(.*\)  netmask.*$/\1/gp"grep 'IPADDR' /etc/sysconfig/network-scripts/ifcfg-em1|awk -F '=' '{p

获取函数的地址(三种方法,分别是@,Addr,MethodAddress)

问题来源: http://www.cnblogs.com/del/archive/2008/07/30/1039045.html#1272783 在编译器看来, 重载函数根本就是完全不同的几个函数, 当然就会有不同的函数地址; 我们用常规方法获取的地址只是第一种重载的地址. 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  

【转载】取得系统中网卡MAC地址的三种方法

From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址,一般说网卡地址我是指物理地址,不知道别人怎么看?物理地址指的是网卡上的存放地址的ROM里的地址,mac地址是这块卡工作的时候用的地址,一般情况下这两个地址是一样的,所以很多人都混用了,甚至不知道有区别  -_-# 网卡工作的时候,一个以太网帧60到1514(不包括crc),帧的crc是网卡自动加的

Javascript数组去重的几种方法

Javascript数组去重的几种方法 新建空数组,通过for...of(ES6)循环遍历,通过indexOf判断元素是否在新数组中存在,将不存在的(indexOf(n)==-1)元素push到新数组中: let arr = [1,1,2,2,3,6,3,77,88,5,98,9,7,2,7,5,3,4,2]; function removeDup_indexOf(originalArr){ let newArr = []; for(n of originalArr){ if(newArr.in

js中数组去重的几种方法

js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                         for(var i=0;i<arr.length;i++){                                 for(var j=i+1;j<arr.length;j++){                                         if(ar