2016.9.30 C语言课堂笔记--(指针)

C语言笔记

指针

  1. int p; (这时候代表后面的是地址变量)

  2. p=5,p表示p只向村存储的地址单元

    • 指针变量就是地址变量
    • 指针变量的定义:

    int a=8;

    int *p;

    p(地址变量)=&a(地址常量);

    • 指针变量的初始化:

    int a;

    int *p=&a;

    • 通过指针变量访问内容

      p<===>(&a)<===>a;

    int a=8;
    //int*代表p是一个地址变量 
    int *p=&a;
    //*这个是取P所代表的地址单元
    *p=9;
    printf("a=%d\n",a);

    printf("*p=%d\n",*p);
    printf("&a=%p\n",&a);
    printf("p=%p\n",p);
    printf("&p=%p\n",&p);//a=9,*p=9,&a=p=0x7fffdd706b64,&p=0x7fffdd706b68
  • 数组与指针、
    数组名就是首元素的地址

    a<===>&a[0]

    a+i<===>&a[i]

    int *p=&a[0]

    p=&a[0]=a

    p+i=&a[i]

    *(p+i)=&a[i]=p[i]

    • 如果想同时定义两个指针变量:
    int a[5]={1,2,3,4,5}; 
    int i,j=0;
    int *p=a;
    *p=a[0];
    for (i=0;i<3;i++)
    {
        j=p[i];
        p[i]=p[4-i];
        p[4-i]=j;
    } 
    for (i=0;i<5;i++)
    {
        printf("%d",a[i]);
    }
    return 0;
    
    int a=2,b=3,temp;
    int *p=&a,*q=&b;
    temp=*p;
    *p=*q;
    *q=temp;
    printf("%d",a);
    printf("%d",b);
    
    
  • 只读变量const:如果用一个const关键字去修饰一个变量,标志着这个变量只读,不可更改。

    • const int a=9;

    • int const a=9//都不可改

    • int a=9;

      int const

      p=&a;(代表不能用P去改p所指向的存储单元里的值)

      *p=8为非法操作

    • int a,b;
      int * const p=&a;代表p一旦指向一个变量移后,就不能改变p的指向
      p=&b;非法操作

  • 一维数组与指针的关系

    • int arr[5]

    • int *p=arr

    • 数组名就相当于首元素的地址

    • 第i个元素地址访问方法

      p+i<===>&p[i]<===>arr+i<===>&arr[i]

    • 第i个元素数值访问方法

      (p+i)<===>p[i]<===>(arr+i)<===>arr[i]

    • arr 实际上int const - *arr;表明arr永远指向第一个元素,不能更改,就是说arr++非法

    • p++合法

  • 函数

    • 什么时候想到用函数
    1. 功能相同,而且这个功能需要使用多次
    2. 函数里的代码尽量不要超过50 行
    • 怎么定义函数

      数据类型+函数名(形式参数列表)
      {

    }
    1. 数据类型有:int、float、double、char、void(空类型)
- 函数定义注意点
    1. 函数定义不允许放在主函数内部
    2. 函数定义必须放在使用之前,如果函数定义没有放在主函数之前,解决方法如下:
        - 将函数声明写在函数声明之前
        - 形参:
            1. 形式上的参数,没有实际意义。
            2. 函数定义的时候,函数名()里面的参数叫形式参数
            3. 形参在指定时要指定每一个参数的数据类型,不能省略。比如:
            
                void sum(int a,b)这种形式参数非法。
        - 实参:
            1. 有实际意义的参数,参数里面是有确定值的。
            2. 函数使用的时候,函数名()里的参数。
        - 实参的数量必须要与形参一致。
- return 的注意点:
    - return是整个函数结束的标志
    - 是将信息返回给函数调用者使用的
- return 使用注意点:
    - void类型的函数结束时可以没有return,也可以有return。如果有return,return后面没有值。
    - 如果是非void类型的(int,char....)函数,函数结束时必须要有return,而且return后面必须要有值,值得数据类型与函数定义类型必须保持一致。
    - 传参返回永远都是数值

//使用函数,输入一个年份输入一个月份查询日历
1990.1.1day1之后开始查询。

(year%4==0&&year%100!=0)||(year%400==0)
计算1990.1.1到2016.8.31所有的天数

#include "stdio.h"
void leap(int *year,int *f,int *count);
void print(int day,int mouth,int f);
//int day_count(int *year,int *count);
//int day_count(int *year,int *f,int *count,int *mouth);
int main()
{
    
    int day,year,f,fate,count=0,mouth,m=0,i;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    printf("请输入一个年数");
     scanf("%d",&year);
     getchar();
     printf("请输入一个月份");
     scanf("%d",&mouth);
     leap(&year,&f,&count);  
//   day_count(&year,&f,&count,&mouth);
    if(f==1)
     {
         for(i=0;i<mouth-1;i++)
            m=m+b[i];
        printf("该年是闰年\n");
     }
     if(f==0)
     {
         for(i=0;i<mouth-1;i++)
            m=m+a[i];
        printf("该年不是闰年\n");
     }
     day=(year-1990)*365+count+m;
     printf("count的值为%d\n",count);
     printf("f的值为%d\n",f);
     printf("总天数为%d\n",day);
     print(day,mouth,f);
     return 0;
}
void print(int day,int mouth,int f)
{
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int last_num,s,i,j=0,t=0;
    last_num=day%7;
    if (f==0)
        s=a[mouth-1];
    if (f==1)
        s=b[mouth-1];
    
    printf("\n日 一 二 三 四 五 六\n");
    
    for (i=1;i<=last_num+1;i++)
    {
        printf("   ");
    }
    for (i=last_num;i<6;i++)
    {
        j++;
        printf("%02d ",j);
        if(i==5)
            printf("\n");
    }
    for (i=6-last_num+1;i<=s;i++)
    {
        t++;
        printf("%02d ",i);
        if(t%7==0)
            printf("\n");
    }
//  for (i=1;i<=s;i++)
//  {
//      if (i%7==0)
//          printf("\n");
//      printf("%02d ",i);
//  }
    printf("\n上月最后一天为星期%d\n",last_num);
    printf("本月天数为%d\n",s);
}
/*
int day_count(int *year,int *f,int *count,int *mouth)
{

    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int day,m=0,i;
     leap(&year,&f,&count);  
    if(*f==1)
     {
         for(i=0;i<*mouth-1;i++)
            m=m+b[i];
        printf("该年是闰年\n");
     }
     if(*f==0)
     {
         for(i=0;i<*mouth-1;i++)
            m=m+a[i];
        printf("该年不是闰年\n");
     }
     day=(*year-1990)*365+*count+m;
     return day;
}*/
/*int day_count(int *year,int *count)
{
     leap(&year,&f,&count);
    int day=(*year-1990)*365+*count;
    return day;
}*/
void leap(int *year,int *f,int *count)
{
    int i;
    for(i=1990;i<*year;i++)
    {
        if (((i%4==0&&i%100!=0)||(i%400==0))==1)
        {
            *count=*count+1;        
        }
    }
//   printf("%d\n",*count);
    if (((*year%4==0&&*year%100!=0)||(*year%400==0))==1)    
        *f=1;
    else 
        *f=0;   
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容