c语言指针使用小练习


c语言指针非常重要,可以成为c的灵魂。为了更深入的理解指针,以下是几个关于指针的小练习
//指针变量作为函数参数,将两个变量的值互换
<span style="font-family: Arial, Helvetica, sans-serif;">#import <Foundation/Foundation.h></span>
void swap (int *a, int *b);
void swap (int *a, int *b)
{
    int temp;
    temp = *a;//通过改变指针指向得值来改变变量得数值
    *a = *b;
    *b = temp;
}

int main(int argc, const char * argv[])
{

   
    //指针练习
    //指针变量作为函数参数来改变两个变量得值
    int a = 28, b = 34;
    int *p = &a;
    int *q = &b;
    swap(p, q);
    printf("a = %d, b= %d", a, b);
    return 0;
}
int main(int argc, const char * argv[])
{

   
    //指针练习
    //数组元素的指针——数组元素的指针就是数组元素的地址,可以用一个指针变量指向一个书组元素
    int a[5] = {33,45,67,34,9};
    int *p , x;
    p = &a[0];//让指针p指向零号元素的地址
    //利用下标法引用数组元素
    x = a[3];//将第4个元素的值给x
    //利用指针引用数组元素
    x = *(p+2);//将第4个元素的值给x
    return 0;
}

 

通过指针变量输出整型数组a的10个元素

int main(int argc, const char * argv[])
{

   
    //指针练习
    //通过指针变量输出整型数组a的10个元素
    int a[10], *p;
    p = a;//指针p指向a数组的0号元素
    
    printf("please enter 10 integer numbers: ");
    for (int i = 0; i < 10; i++) {
        scanf("%d",p++);//每输入一个数字,指针向后移动一位,指向下一个元素的地址
        }
    p = a;//经过一轮循环后,指针已经指向数组的最后一个元素地址,为了正常打印出结果,需要将指针重新指向首元素
    <pre name="code" class="objc">for (int i = 0; i < 10; i++,p++) {
        printf("a[%d] = %d ", i, *p);
    }

return 0;}

 指针使用的小技巧: 

假如指针p指向a[0];

则:

(1)p++;

*p;

先让p加一,指向下一个元素的地址,再做取值操作,即取出a[1]的值。

(2)、*p++;

由于++和*运算同优先级,结合方式为右jiehe,所以等同于*(p++);先引用p的值,实现*p运算,再让p的值加一,指向下一个元素的地址。

以上程序的输出部分可以简化为:

for (int i = 0; i < 10; i++) {
        printf("a[%d] = %d ", i, *p++);
    }

(3)、*(p++)与*(++p)区别:

*(p++)是:先取p所指向地址的值,然后让p+1;

*(++p)是:先让p+1,再取(p+1)后指向地址的值。

(4)、++*(p)。表示取出p指向地址的值后,再将此值加一。





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值