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顽决;

    • 通過指針變量訪問內(nèi)容

      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
  • 數(shù)組與指針、
    數(shù)組名就是首元素的地址

    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關(guān)鍵字去修飾一個變量才菠,標志著這個變量只讀茸时,不可更改。

    • 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嘱兼;非法操作

  • 一維數(shù)組與指針的關(guān)系

    • int arr[5]

    • int *p=arr

    • 數(shù)組名就相當于首元素的地址

    • 第i個元素地址訪問方法

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

    • 第i個元素數(shù)值訪問方法

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

    • arr 實際上int const - *arr;表明arr永遠指向第一個元素贤徒,不能更改芹壕,就是說arr++非法

    • p++合法

  • 函數(shù)

    • 什么時候想到用函數(shù)
    1. 功能相同,而且這個功能需要使用多次
    2. 函數(shù)里的代碼盡量不要超過50 行
    • 怎么定義函數(shù)

      數(shù)據(jù)類型+函數(shù)名(形式參數(shù)列表)
      {

    }
    1. 數(shù)據(jù)類型有:int接奈、float踢涌、double、char序宦、void(空類型)
- 函數(shù)定義注意點
    1. 函數(shù)定義不允許放在主函數(shù)內(nèi)部
    2. 函數(shù)定義必須放在使用之前睁壁,如果函數(shù)定義沒有放在主函數(shù)之前,解決方法如下:
        - 將函數(shù)聲明寫在函數(shù)聲明之前
        - 形參:
            1. 形式上的參數(shù)互捌,沒有實際意義潘明。
            2. 函數(shù)定義的時候,函數(shù)名()里面的參數(shù)叫形式參數(shù)
            3. 形參在指定時要指定每一個參數(shù)的數(shù)據(jù)類型秕噪,不能省略钳降。比如:
            
                void sum(int a,b)這種形式參數(shù)非法腌巾。
        - 實參:
            1. 有實際意義的參數(shù)遂填,參數(shù)里面是有確定值的。
            2. 函數(shù)使用的時候澈蝙,函數(shù)名()里的參數(shù)吓坚。
        - 實參的數(shù)量必須要與形參一致。
- return 的注意點:
    - return是整個函數(shù)結(jié)束的標志
    - 是將信息返回給函數(shù)調(diào)用者使用的
- return 使用注意點:
    - void類型的函數(shù)結(jié)束時可以沒有return灯荧,也可以有return凌唬。如果有return,return后面沒有值漏麦。
    - 如果是非void類型的(int客税,char....)函數(shù),函數(shù)結(jié)束時必須要有return撕贞,而且return后面必須要有值更耻,值得數(shù)據(jù)類型與函數(shù)定義類型必須保持一致。
    - 傳參返回永遠都是數(shù)值

//使用函數(shù)捏膨,輸入一個年份輸入一個月份查詢?nèi)諝v
1990.1.1day1之后開始查詢秧均。

(year%4==0&&year%100食侮!=0)||(year%400==0)
計算1990.1.1到2016.8.31所有的天數(shù)

#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("請輸入一個年數(shù)");
     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("總天數(shù)為%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("本月天數(shù)為%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;   
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市目胡,隨后出現(xiàn)的幾起案子蜡娶,更是在濱河造成了極大的恐慌瓢湃,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梢卸,居然都是意外死亡爷抓,警方通過查閱死者的電腦和手機挨下,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門侠仇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筑累,你說我怎么就攤上這事袱蜡。” “怎么了慢宗?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵坪蚁,是天一觀的道長。 經(jīng)常有香客問我镜沽,道長敏晤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任淘邻,我火速辦了婚禮茵典,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宾舅。我一直安慰自己统阿,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布筹我。 她就那樣靜靜地躺著扶平,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔬蕊。 梳的紋絲不亂的頭發(fā)上结澄,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音岸夯,去河邊找鬼麻献。 笑死,一個胖子當著我的面吹牛猜扮,可吹牛的內(nèi)容都是我干的勉吻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼旅赢,長吁一口氣:“原來是場噩夢啊……” “哼齿桃!你這毒婦竟也來了惑惶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤短纵,失蹤者是張志新(化名)和其女友劉穎带污,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體香到,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡鱼冀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了养渴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雷绢。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡泛烙,死狀恐怖理卑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔽氨,我是刑警寧澤藐唠,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站鹉究,受9級特大地震影響宇立,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜自赔,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一妈嘹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绍妨,春花似錦润脸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灾测,卻和暖如春爆价,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背媳搪。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工铭段, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秦爆。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓序愚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鲜结。 傳聞我的和親對象是個殘疾皇子展运,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 第1章 第一個C程序第2章 C語言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計第5章 條件結(jié)構(gòu)程序設(shè)計第6章...
    小獅子365閱讀 10,675評論 3 71
  • 1.語言中變量的實質(zhì) 要理解C指針拗胜,我認為一定要理解C中“變量”的存儲實質(zhì)蔗候, 所以我就從“變量”這個東西開始講起吧...
    金巴多閱讀 1,784評論 0 9
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運用指針編程是C語言最主要的風格之一埂软。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)锈遥; ...
    朱森閱讀 3,451評論 3 44
  • 前言:指針是 C語言一個重要概念,也是C 語言的一個重要特色勘畔。使程序簡潔所灸、緊湊、高效炫七。指針乃是C之精華爬立。 數(shù)據(jù)在內(nèi)...
    瀟湘候晨雪閱讀 767評論 0 0
  • 作業(yè)整理; 指針的基本的結(jié)構(gòu)與基礎(chǔ)知識整理万哪; 作業(yè)講解:(1) 將2~100之間的素數(shù) 保存到數(shù)組中侠驯,并遍歷輸出,...
    比莉吉恩閱讀 369評論 0 0