#include作为参数的指针void sum(int begin, int end) { int i; int sum = 0; for (i = begin; i <= end; i++) { sum + 1; } printf("%d到%d的和是%dn", 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
所以必须通过初始化进行赋值



