C语言:指针遍历访问数组中的值【scanf取地址问题】,此时的parray[i] 等于 array[i]

.
初始化数据

int array[3] = {1,2,3};

int *parray;
		 
parray = array; //或者parray = &array[0];

1.普通遍历数组的访问:

printf(“第一个元素的地址:%p\n”,parray++);
printf(“第二个元素的地址:%p\n”,parray++);
printf(“第三个元素的地址:%p\n”,parray);

2.通过for循环遍历数组的访问

 		
     parray = &array[0];    此时的意思是让指针偏移回到首地址,因为上面的普通访问已经把地址偏移到了最后一位,继续遍历偏移的话,会超出范围,导致乱码
     for(i=0;i<3;i++){ 			
   		 printf(" %d ",*parray);
         parray++; 	
     }	
         		
        或者
        
 	 parray = &array[0];  
     for(i=0;i<3;i++){ 
     printf(" %d ",parray[i]);    parray[i] 的来源 :parray = array,都是代表数组地址,所以可以对比来写,是一样的意思。
     							  即
     							  parray[0]  parray[1]  parray[2] 
     							  可以相等于
     							  array[0]   array[1]   array[2] 
     							  两种写法代表的都是相同的意思
     							  
     					注意:此时的 parray[i] 不是代表地址,代表的是 array[i],当成array[i]来用即可
     							  		那么scanf的时候
     				              			scanf("%d",&parray[0]); 或者 scanf("%d",parray);  【只能是第一个这样两种写法】
     				              			scanf("%d",&parray[1]);
     				  			  		printf的时候
     				          	  			printf("%d",*parray);	或者printf("%d",parray[0]);
     				          	  			printf("%d",*++parray);	或者printf("%d",parray[1]);
   	}

运算结果

为什么:
要让 parray = &array[0];
【 此时的意思是让指针偏移回到首地址,因为上面的普通访问已经把地址偏移到了最后一位,继续遍历偏移的话,会超出范围,导致乱码 】
{{ 所以

指针的偏移一定要注意范围不能超

}}

代码如下:

     /*二.指针变量访问数组的值:*/
    	 int array[3] = {1,2,3};
		 int *parray;
         parray = array; //或者parray = &array[0];
         
		 //1.普通的访问:		
			printf("第一个元素的地址:%p\n",parray++);
			printf("第二个元素的地址:%p\n",parray++);
			printf("第三个元素的地址:%p\n",parray);
			
         //2.通过遍历数组访问	
			parray = &array[0];
            for(i=0;i<3;i++){
				printf(" %d ",*parray);
                parray++;
			}	
			或者
            parray = &array[0];
            for(i=0;i<3;i++){
				printf(" %d ",parray[i]);
			}	
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枕上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值