C 指针

从方法的参数开始讲起。

一、存放整型数据的指针

void CalledByAddress(int *a)

{

*a = *a+1;

}

void CalledByValue(int a)

{

a = a+1;

}

int main()

{

int c = 3;

CalledByValue(c);

printf("%i\n",c)//不管CalledByValue方法中做什么操作都不会改变c的值;

CalledByAddress(&c);

printf("%i\n",c)//打印4;

}



二、存放结构数据的指针

void CalledByValuePoint(Point_t point)  //called by value
{
        double temp = point.x;
        point.x = point.y;
        point.y = temp;
}

void CalledByAddressPoint(Point_t *ptr)         //called by adress
{
        double temp = ptr->x;
        ptr->x = ptr->y;
        ptr->y = temp;
}

int main()

{

Point_t point;
        point =(Point_t){3.0,4.0};
        CalledByValuePoint(point); //坐标不变
        PrintPoint(point);
        ReflectPoint(&point); //坐标对调
        PrintPoint(point);

}


三、存放数组数据的指针

int LocateCharacter(char *s,char c)     或者 int LocateCharacter(char s[],char c)//对数组来说都是地址调用。不存在值调用
{
        int i=0;
        while(i<strlen(s)){
                if(s[i]==c){
                        s[i]='a';
                        return i;
                }
                i=i+1;
        }
        return -1;
}

int main()

{

char a[]="hello";

LocateCharacter(a,'e');//返回 hallo;

LocateCharacter(&a[0],'e');//返回hallo;       对于数组  a == &a[0]

}

百达表行,祝你百事可达>>

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值