复习题知识点

1.            int a=10,b=20,*p1,*p2;

p1=&a;

p2=&b;

*p1=*p2;(代表a=b,a=20)

p1=p2;(代表指向变了,p1指向b,a的值没发生改变,p1=20,p2=20,a=10,b=20)

2.       fgetc(文件):从文件读一个字符

fputc(字符,文件):将字符写入文件

3.       给指针变量赋值前必须&,让其指向一个空间。

例:int *p,n;

p=&n;

scanf(“%d”,p);

4.       字符数组必须初始化必须声明时就初始化。

例:char s[3]={“abc”};

(下面的是错误的)

char s[3];

s[]={“abc”};

5.       字符指针可以声明时初始化,也可以另起一条语句。

例:char *s=”abc”;

或:char *s;

s=”abc”;

6.       main函数的正确说明形式:

int main(int argc,char *argv[]);

int main(int argc,char *[]argv);

int main(int argc,char **argv);

(argc:参数个数,argv:参数)

7.       指针函数与函数指针:

(1)指针函数

类型标识符 *函数名(参数表)

Int *fun(int x,int y)

指针函数是指带有指针的函数,即本质是一个函数,函数的返回类型是某一类型指针(返回值是地址)。

(2)函数指针

函数指针是指向函数的指针变量,即本质是一个指针变量。

类型标识符 (*指针变量名)(参数表)

int max(int x,int y)

{

                    ……                  //函数体

}

Int main()

{

                    Int (*p)(int ,int);                //声明一个函数指针

                    p=max;                       //函数指针指向该函数

                    (*p)(a,b);                     //调用该函数

         ……

                    return 0;

}

8.       若要对a进行++运算,要求a不能为数组名,以下都不可以

int a[3][2];         //普通二维数组

char *a[]={“abc”};         //指针数组

指针可以进行++运算

9.       指针数组与数组指针:

(1)       指针数组

char *n[]={“gain”,”much”,”strong”};



n[1]代表much的地址,*n[1]代表字符m%s,n[1]输出much)(%c,*n[1]输出m

数组元素也为指针,本质是一个数组

(2)       数组指针

Int (*a)[N];

a指向包含N个元素的数组,本质是一个指针

10.   指针变量运算时,

(1)       重新赋值(数值)会改变指针指向变量的值

例:int a=5,*p=&a;

*p=10;

那么a最后等于10

(2)       重新指向(将地址赋给指针)不会改变原先指针指向的变量的值

例:int a=5,b=6,*p=&a;

*p=&b;

*p由原先的5变为6,而a还是5

11.int a[]={10,20,30},*p=a;

   p++;

   p向高地址移了一个存储单元,也就是向高地址移了两个字节,移动的字节数取决于p指向元素的类型。

11.   int a[5][5],*p=a;

表示a[1][2]元素:

*(*(a+1)+2),*(*(p+1)+2),a和p用法一样

a+1=&a[1]  ,*(a+1)=a[1],  a[1]+2=&a[1][2],  *(a[1]+2)=a[1][2]

12.   malloc函数和calloc函数

(1)       malloc函数:

声明一个struct p型的内存

struct p *pr=(struct p*)malloc(sizeof(struct p));

malloc在动态分配完内存后,内存空间不初始化,里边数据都是随机产生的垃圾数据

(2)       calloc函数:

声明一个int型的10个元素的数组

int *p=(int *)calloc(10,sizeof(int));

calloc在动态分配完内存后,自动初始化该内存空间为零

          caoolc分配的是指针,但用法和数组一样。

          例:

                     #include 

void main()

{

                        int *p=(int *)calloc(10,sizeof(int));

                        int i;

                        for(i=0;i<10;i+=2)

                        {

                         printf("请输入第%d个数:",i+1);

                           scanf("%d",&p[i]);

                        }

                         for(i=0;i<10;i++)

                        {

                           printf("%d\n",p[i]);

                        }

}

你可能感兴趣的:(复习题知识点)