C语言中指针的简单用法

指针的应用与理解代码
%p-- 指针占位符 , %x-- 16进制占位符

 ```C
    int num1 = 8;
    int num2 = 10; 
    int *ptr_num1 = &num1;
    int *ptr_num2 = &num2;
    //%p 指针占位符  %x 16进制占位符 
	printf("地址是:%p\t %x\n", ptr_num1,&num1 );
    printf("ptr_num1指向的值为: %d\n",*ptr_num1); 
    printf("ptr_num2指向的值为: %d\n",*ptr_num2); 
    ptr_num2 = ptr_num1;
    printf("ptr_num2指向的值为: %d\n",*ptr_num2);

修改指针的地址后
用指针来输出数组

int i;
     double score[] = {12,23,34,45,65,89,78};
     double *ptr_score = score;
     for( i = 0; i < 7; i++)
     {
     	//printf("%.2lf\n",*ptr_score++); 不推荐此输出方式,因为指针加减后,会在尾部,不在首部。错误指针 
     	printf("%.2lf\n", *(ptr_score + i));  
	 }

用指针来访问数组

int i;
    int array[] = {12,23,34,45,56,78,89} ;
    int *ptr_array = array;
    //赋值完毕后,用指针访问数组
	for(i = 0; i < 7; i++)
	{
		//printf("第%d个元素的值为:%d\t地址为:%p\n", i+1, array[i], &array[i]);
		printf("第%d个元素的值为:%d\t地址为:%p\n", i+1, *(ptr_array+i), ptr_array+i);
	 } 

在这里插入图片描述
用指针来进行数组的逆序输出
–指向首元素的指针向后移动
–指向末元素的指针向前移动

int array[] = {12,23,34,45,56,78,89} ;
    int i;
    int temp;
    int *ptr1 = array; //指向数组首元素的指针 
    int *ptr2 = array + 6;//指向数组末元素的指针 
    printf("正序输出:"); 
    for(i = 0; i < 7; i++)
    {
    	printf("%d\t",array[i]);
	}
	printf("\n逆序输出:"); 
	for(i = 6; i >= 0; i--)
    {
    	printf("%d\t",array[i]);
	}
	printf("\n逆序输出:"); 
    while(ptr1 != ptr2)
    {
    	temp = *ptr1;
    	*ptr1 = *ptr2;
    	*ptr2 = temp;
    	//指向首元素的指针向后移动
		ptr1 ++;
		//指向末元素的指针向前移动
		ptr2 --; 
	}
    for(i = 0; i < 7; i++)
    {  
    	printf("%d\t", *(array + i));
	}

指针进行二维数组的输出
//score[i] 等价于 (score + i);

int i,j;
    int score[5][3] = {
	  {12,23,34},
	  {45,56,67},
	  {78,89,90},
	  {21,54,85},
	  {12,23,34},
	};    //二维数组就是由多个一维数组组成的 
    for(i = 0; i < 5; i++)   
    {
    	for(j = 0; j < 3; j++)
    	{
    		//printf("%d\t", score[i][j]);       
    		//printf("%d\t", *(score[i] + j));  //score[i] 等价于 *(score + i); 
    		printf("%d\t", *(*(score + i) + j));
		}
        printf("\n");
		 
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值