C

指针

运算符&

scanf("%d", &i)里的&

1.获得变量的地址,它的操作数必须是变量

  int i;printf("%x", &i)

2.地址的大小是否与int相同取决于编译器

  int i;printf("%p",&i);

3.&不能对没有地址的东西取地址,例:&(a+b)&(a++)&(++a)

指针

指针就是保存地址的变量

地址运算符:*

*后跟一个指针名或地址时,*给出储存在指针指向地址上的值

int *p→p是指向int类型的指针

 

指针变量

1.普通变量的值是实际的值

2.指针变量的值是具有实际值的变量的地址

指针应用场景

1.交换两个变量的值

void swap(int *pa, int *pb)
{
    int t = *pa;
    *pa = *pb;
    *pb = t;
}

2.1)函数返回多个值,某些值就只能通过指针返回

  2)函数返回运算的状态,结果通过指针返回

指针最常见的错误:定义了指针变量,还没有指向任何变量就开始使用指针

数组参数

以下四种函数原型是等价的:

1.int sum(int *ar,int n);

2.int sum(int *,int);

3.int sum(int ar[],int n);

4.int sum(int [],int);

数组变量是特殊的指针

1.数组变量本身表达地址

  int a[10];int *p=a;→无需用&取地址,但是数组的单元表达的变量需要用&取地址(a == &a[0])

2.[]和*运算符可以对数组做,也可以对指针做

3.数组变量是const的指针所以不能被赋值

指针与const(只适用于C99)

1.指针是const

表示一旦得到了某个变量的地址,不能在指向其他变量

int *const q = &i→q是const,所以(*q=26;√),(q++;×)

2.所指是const

表示不能通过这个指针去修改那个变量

const int *p = &i;→(*p = 26;×)(i = 26;  p = &j;√)

为了保护数组不被函数破坏,可以设置参数为const

 

求n个自然数的平均值

#include <stdio.h>
int main()
{
    float i,n,m;
    scanf("%f", &n);
    float sum = 0;
	
    for ( i=0;i<=n;i++ ) {
	sum = sum + i;
    }
    m = sum/i;
    printf("%f",m);

    return 0;
 } 

按照格式打印n行由“*”组成的三角形。

例如:当n=3时,***

                                **

                                 *

#include <stdio.h>
int main()
{
    int i,j,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++) {
	for(j=0;j<i-1;j++) {
	    printf(" ");
	}
	for(j=n;j>=i;j--) {
            printf("*");
	}
        printf("\n");
    }
    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值