您的位置:首页 > 理论基础

全国计算机等级考试二级教程--C语言程序设计(2018年版) 随手笔记(四)

2018-03-22 15:09 573 查看
声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。作者:sumjess目前内容:第八、九、十、十一章总结1、数组和指针基本组合:


2、给指针变量赋“”值:int *p=NULL;NULL的代码值为0,指针p叫做空指针;3、&和*优先级:&和*优先级一致,所以j=*(&i)与j=*&i一致;4、指针的比较:若两个指针指向同一数组的元素,则可以进行比较。指向前面的元素的指针变量“小于”指向后面的元素的指针变量。附加一下,若两个指针指向同一数组的元素,,则两个指针变量的值之差是两个指针之间的元素。
5、通过传送地址值在被调用函数中直接改变调用函数中的变量的值:


6、函数、指针和数组:



7、指针操作



8、二维数组的定义:
    ①int a[2][2]={ {1,2},{3} };   //会发现a[1][1]未被定义,未被定义的则为0;
    ②int a[4][3]={ {1,2},{4,5} };  //系统自动给后面各行的元素补初值0;

    ③int a[4][3]={1,2,4,5};      //一行一行按顺序赋值,那么四位数只能赋值到第二行第一个元素;

    ④int a[ ][3]={ {1,2,3,4},{4,5},{6,7} };    //第一维大小由所赋初值的行数来决定;

    ⑤int a[][3]={1,2,3,4,5,6};    //第一位的原则是,在满足每行尽可能都是3个元素的情况下尽可能的大;

9、a[i][j]的地址可用以下五种表达式求得:
    ①&a[i][j]
    ②a[i]+j    ③*(a+i)+j
    ④&a[0][0]+4 * i+j
    ⑤a[0]+4 * i+j

10、a数组元素可用以下五种表达式来引用:
    ①a[i][j]

    ②*(a[i]+j)

    ③*(*(a+i)+j)

    ④(*(a+i))[j]
    ⑤*(&a[0][0]+4*i+j)

11、二维数组名作为市参事实参和形参之间的数据传递:
#include <stdio.h>
#define M 5
#define N 3
main()
{
double s[M]
;
....
fun(s);
....
}
//则fun函数的首部可以是以下三种之一
fun(double (*a)
)
fun(double a[]
)
fun(double a[M]
)
12、指针数组作为实参时实参和形参之间的数据传递:#include <stdio.h>
#define M 5
#define N 3

main()
{
double s[M]
.*ps[M];
.....
for(i=0;i<M;i++)
ps[i]=s[i];
fun(ps);
.....
}
//则fun函数首部可以是以下三种形式之一
fun(double *a[M])
fun(double *a[ ])
fun(double **a)13、通过赋初值的方式给一维字符数组赋字符串:
    char str1[]={ 's','t','r','i','n','g','!','\0' };    //定义字符数组

    char str2[]={ 's','t','r','i','n','g','!' };         //字符串

    char str3[]={"string!"};         //字符串
    char str4[]="string!";         //字符串
14、使指针指向一个字符串:
    (1)通过赋初值的方式使指针指向一个字符串:

            char  *ps1="form one";

            char str[ ]= "form two",*ps2=str;

            注意:不要误以为是将字符串赋值给了ps1,使ps1和ps2指向了字符串的第一个字符f;
    (2)通过赋值运算使指针指向一个字符串:

            如果已经定义了一个字符型指针,可以通过赋值运算将某个字符串的起始地址赋给它,从而使其指向一个具体的字符串。char *ps1;
ps1=“”form one“;”            这里也是将存放字符串常量的首地址赋给了ps1。又如:char str[]="form two",*ps2;
ps2=str; /*此语句等价于 ps2 = &str[0];*/            通过赋值语句使指针ps2指向了存放字符串的字符数组str的首地址。
    (3)用字符串数组作为字符串和用指针指向的字符串之间的区别:

            


        (4)gets终端输入:

            


         (5)puts终端输出:



15、用于字符串处理的函数:
    (1)字符串复制函数 strcpy(s1,s2) 把s2所指字符串内容复制到s1;
    (2)字符串连接函数strcat(s1,s2)  把s2所指字符串内容连接到s1所指字符串的后面;
    (3)求字符串长度函数 strlen(s)  此函数计算出以s为起始地址的字符串长度,并作为函数值返回。这一长度不包括结束标志'\0'.
    (4)字符串比较函数strcmp(s1,s2)  比较s1s2所指字符串大小,若s1大于s2为正,相等为零,其他为负;注:对应位置一个一个进行比较,比较的是ASCII码值;
16、指针和数组:
    (1)复习:



      (2)传给main函数的参数

             若以下程序放在myc.c文件中,在编译连接后,生成一个myc.exe文件,输出argc和argv中的数据。#include <stdio.h>
main(int argc,char *argv[ ]) //main(int argc,* *argv)与前面一样
{
int i;
printf("argc=%d\n",argc);
for(i=1;i<argc;i++)
printf("%s",argv[i])
printf("\n");
}
            若在命令行中输入:
            myc     A     COMMAND     LINE<CR>(此处<CR>表示Enter键)
            程序将输出:
             argc = 4 //表示在argc中存入了命令行中字符串的个数

             A     COMMAND     LINE

17、指向函数指针变量的定义:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: