`
阿尔萨斯
  • 浏览: 4109281 次
社区版块
存档分类
最新评论

C-数组地址(4)

 
阅读更多

以下是一维二维数组,三维数组以此类推.


一维数组:

#include <stdio.h>

//public a method>sum;
void change(int array[],int);

int main(int argc,char *argv[]){
	
	//一维数组不同其他语言的地方.地址
	int a[]={1,2};
	int c=1;
	//>>>>printf 4
	size_t leng=sizeof(int);
	printf("%u",leng);
	//a代表的是一个常量,代表自己的内存地址.
	//a相当于&a[0];
	printf("\na与&a[0]的内存地址:");
	printf("\n%x\n%x",a ,&a[0]);
	//相邻的两个数组元素的内存地址差距是该数据的类型的长度
	//(类型长度取决与编译器) 例如上面打印的int值为4 则a[0]与a[1]的内存地址相差4
	printf("\n&a[0]与&a[1]的内存地址:");
	printf("\n%x\n%x",&a[0] ,&a[1]);

	//局部变量cc的赋值并不影响c的值
	//而啊a,的元素赋值相当于传入一个内存地址 因此值改变了
	change(a,c);
	printf("\n%d %d",a[1],c);


}

//define a method>sum;
void change(int array[],int cc){
	//系统根据数组的地址还有类型的长度获取某个元素的
	//内容,从而改变其值.
	array[1]=5;
	cc=5;
}



二维数组:


#include <stdio.h>

int main(int argc,char *argv[]){
	
	int a[2][2]={1,2,3,4};
	int b[2][2]={{1,2},{3,4}};
	//元素如下
	//a[0][0] a[0][1]
	//a[1][0] a[1][1]
	//上面二维数组可看成数组a[0],a[1];
	//即数组的地址是 a=a[0]=&a[0][0] 验证如下
	printf("a  a[0]  &a[0][0] 的值分别为:\n");
	printf("%d %d %d\n",a,a[0],&a[0][0]);
	//a[1]的地址等于a[0]加上数组的长度 即int的长度*数组个数
	printf("a[1]的地址为:\n");
	printf("%d ",a[1]);
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics