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

C-数组指针(7)

 
阅读更多

利用指针间接修改数组元素与遍历数组元素

#include <stdio.h>

void test();
void test1();

int main()
{	
	
	test();	
	test1();	
    return 0;
}

//利用指针修改数组元素 
void test(){
	int a[2];//d定义一个数组元素
	//数组中 a相当于&a[0] 
	//int *p = a;
	int *p=&a[0]; 
	*p=10;
	printf("利用指针修改数组元素\n");
	printf("%d",a[0]);
	
}

//利用指针循环遍历数组元素 
void test1(){
	int a[3]={1,2,3}; 
	int count=0;
	int *p=a;
	printf("\n利用指针循环遍历数组元素 \n");
 	for(;count<3;count++){
 		//p+count相当于p指向了a[0]位移count后的地址
 		//count的偏移量取决于指针类型 
		// *(p+count)相当于取出该地址的值; 
		//遍历完后p的值并没有改变 
	 	printf("%d\n",*(p+count));
	 	//每次修改指针p 的值。 
		//printf("%d\n",*(p++));
		// error *(a++) >>>a是一个数组地址常量 所以不能更改 
		//printf("%d\n",*(a+count));
		//printf("%d\n",*(&a[0]+count));
 	}

}



数组 指针在函数参数中的关系

#include <stdio.h>

void change(int a[]){
	a[0]=10;
}

void change2(int *p){
	*(p+1)=2;
}

void change3(int *p){
	p[1]=5;
}

int main()
{	
	//当一个函数所需的参数是一个数组,指针,则这个函数所需要的
	//实参可以为数组,指针,数组的第一个元素地址。
	//总归为这个函数只需要传入一个地址。 
	int b[2];
	int *p=b; 
	change(&b[0]);
	printf("传入数组第一个元素的地址:%d",b[0]);	
	change2(b);
	printf("\n传入一个数组:%d",b[1]);	
	change3(p);
	printf("\n传入一个指针:%d\n",b[1]);	
    return 0;
}




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics