C语言指针3

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;

\

你可能感兴趣的:(C语言指针3)