#include<stdio.h>
void sum(int begin, int end)
{
int i;
int sum = 0;
for (i = begin; i <= end; i++)
{
sum + 1;
}
printf("%d到%d的和是%d\n", begin, end, sum);
}
int main()
{
sum(1, 10);
sum(20, 30);
sum(35, 45);
return 0;
}
作为参数的指针
void f( int* p)
在被调用的时候得到了某个变量的地址;
int i=0; f(&i);
在函数里面可以通过这个指针访问外面的这个i
0地址
当然你的内存中有0地址,但是0地址通常是个不能随便碰的地址
所以你的指针不应该具有0值
因此可以用0地址来表示特殊的事情:
返回的指针是无效的
指针没有被真正初始化 (先初始化为0)
NULL是一个预定定义的符号,表示0地址
有的编译器不愿意你用0来表示0地址
指针的类型转换
void*表示不知道指向什么东西的指针
计算时与char*相同(但不相通)
指针也可以转换类型
int*p=&i;void*q=(void*)p;
这并没有改变p所指的变量的类型,而是让后人用不同的眼光通过p看他所指的变量
const在*前后
const int*p1=&i;(他所指的东西不能被修改)
int const* p2=&i;(也是他所指的东西不能被修改)
int *constp3=&i(指针不能被修改)
count数组
count int a[]={1,2,3,4,5,6,};
数组变量已经是const的指针了,这里的const表明数组的每一个单元都是const int
所以必须通过初始化进行赋值