课堂笔记

11.28.2016

1.strcmp(a,b):比较a,b字符串,如果a=b,返回“0”;

                 如果a>b,返回正直;a<b,返回负值

2.当函数返回指针需要返回NULL时(也就是函数可能出现无法找到那个指针时),需要加入#include<stdio.h>头文件(这个函数为一个单独的.c文件时)

格式化输入输出

●int main()

{

     printf(“dsaff”);

     while(1);

     return0;       //死循环,这样无法输出结果

}

   1.printf();为行缓冲,也就是这一行数据填满才能输出(之所以去掉while可以输出,是因为程序结束需要清除缓存)

   2.printf(“dsd\n”);换行必定可以输出

   3. printf();后面加scanf();函数也可以输出,因为scanf函数与printf共用同一个缓冲区,所以要先清理prinf的缓冲内容

应用:添加printf函数调试信息时,加入放在函数首行测试函数是否执行,可能导致printf没有输出,造成误判,所以养成printf结尾加\n的习惯

指针与数组

地址的步长:地址加1,即跳一个步长,这个步长取决于变量的数据类型,int跳4个字节

                      e.g.   int a; printf(“%p”,&a+1);

  *      名称:间接运算符取值运算符

         取值运算符:取指针变量对应空间保存的地址对应的内存空间的值

                     也就是说取p保存的地址(也就是int a的地址),然后再取出这个地址指向的变量(a)保存的内容

自增

1.num++:对num对应的内存空间的值自加1(num为int)

2.p++:  对p对应(即保存)的内存空间的值自加1步长(p为int *)

3.(*p)++:对p指向的内存空间的值加1(如果指向num,就是num保存内容自增,等同于num++)

区分:指针p对应的空间与指向的空间:

       对应的:即变量保存的内容;

       指向的:即指针保存地址的那个变量内保存的值,这样就解释了为什么

               &num==p==*pp==*PPP

               p保存num的地址,

多维指针

   int num=5;       0x1000

    int *p=&num;      0x2000        //一维指针,p保存num地址

    int **pp=&p;      0x3000        //二维指针,pp保存p的地址

     int***ppp=&pp;   0x4000       //三维指针,ppp保存pp的地址

     num==*p==**pp==***ppp=5

&num==p==*pp==**ppp=0x1000

     &p==pp==*ppp=0x2000

     &pp==ppp=0x3000

&ppp=0x4000    

程序代码见:程序->“理解num,p,pp,ppp指针.c”

字符指针

1.数组遍历(ptr的地址一直在变)      2. 数组遍历(ptr的地址一直不变

while(*ptr!=’\0’)                          for(i=0;*(ptr+i)!=’0’;i++)

{   ptr++;                               {

}                                       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值