int main()
{
int a[5] = {1,3,5,7,9};
int *num[5] = {&a[0],&a[1],&a[7],&a[9]};
int **p,i;
p = num;
for(i = 0;i < 5;i++)
{
printf(“%d”,**p) ;
p++;
}
}
//=======================================
指针数组作 main 函数的形参
int main( int argc,char *argv[ ] )
argument count ( vector)
//=======================================
全局变量:分配在内存中的静态存储区,
非静态的局部变量:分配在内存中的动态存储区,存储区称为 栈区(stack)。
C语言允许 建立内存动态分配区域,存放临时的数据 ,这些数据不必在程序的声明 部分定义,也不必等到函数结束时 才释放。需要时 开辟 ,不需要时 释放。
这些数据存放在 一个特别 的自由存储区 称为 堆区(heap)。由于未在声明部分 定义 他们 为 变量 或数组 ,因此不能通过 变量名 或者数组名 去引用 这些数据 ,只能通过指针 来引用。
定义: 系统提供的库函数。
malloc calloc free realloc
//===============================
无类型指针
# include
#include (time.h)
int t = time(0); //获取系统当前的时间
srand(t);// 不断变化的种子
for(int i = 0;i < 10;i++)
{
int a = rand();
}
//=============================
递归调用
void test()
{
printf(“jjj\n”);
test();
}
int main()
{
test();
return 0;
} // 注意条件
int fun (int n)
{
if (n <= 0)
{
return 1;
}
int result = n * fun(n - 1);
return result;
}
int main( )
{
int r = fun(5);
printf(“%d”,r);
}
//================================
建立动态数组 输入5个学生的成绩 建立一个函数 检查有无低于60 分的学生 ,有 则 打印 出来
#include
# include
int main( )
{
void check(int *);
int *p1,i;
p1 = (int *)malloc(5 * sizeof(int));
for(i = 0;i < 5;i++)
scanf(“%d”,p1 + i);
check(p1);
return 0;
}
void check(int *);
{
int i;
printf(“they are fail:");
for(“i = 0;i < 5;i++”)
if(p[i] < 60) printf(“%d”,p[i]);
printf(“\n”);
}
//===============
、指针变量的值是一个地址
、地址就是指向 通过地址 能找到具有该地址的对象
、一维数组名代表数组首元素的地址。 int *p,a[10];p = a;
\
网友评论