2019-12-04始第四次C語(yǔ)言開(kāi)發(fā)

一.函數(shù)

二.指針

demo:輸入字符串輸出重復(fù)字符串次數(shù)

一.函數(shù)

1.程序的入口函數(shù)
main.cpp 為了讓閱讀者知道我這里面寫(xiě)的是入口函數(shù)

2.將不同的功能模塊用不用.h.cpp來(lái)封裝
.h 頭文件函數(shù)聲明(不能實(shí)現(xiàn):不能有{})
.cpp.c 實(shí)現(xiàn)穩(wěn)健 函數(shù)的具體實(shí)現(xiàn){}

3.導(dǎo)入頭文件進(jìn)行使用

#include<stdio.h>
#include"calculator.h" 
int main(){
    printf("1+1=%d\n",add(1,1));
    printf("2-1=%d\n",minus(2,1));
    printf("2*2=%d\n",multiply(1,1));
    printf("2/2=%d\n",devide(1,1));

    return 0;
} 

這是實(shí)現(xiàn)文件(具體這個(gè)函數(shù)的操作)
1.先導(dǎo)入需要實(shí)現(xiàn)的頭文件
2.實(shí)現(xiàn)這個(gè)頭文件里面的所有方法 calculator.cpp

#include"calculator.h" 
//加法 
int add(int a,int b){
    return a+b;
}
//減法 
int minus(int a,int b){
    return a-b;
}
//乘法 
int multiply(int a,int b){
    return a*b;
}
//除法 
int devide(int a,int b){
    if(b==0){
        printf("錯(cuò)誤"); 
    }else{ 
    return a/b;
}
}

頭文件里面聲明函數(shù)calculator.h

#include<stdio.h>
int add(int a,int b);//加
int minus(int a,int b);//減
int multiply(int a,int b);//乘 
int devide(int a,int b); //除

二.指針

1.什么是指針 作用
如果希望在函數(shù)之間傳遞數(shù)據(jù)(>1)給調(diào)用者
*:
①定義表明一個(gè)指針變量
②在使用過(guò)程中在前面加就是表示指針指向的值
&:取地址
2.指針的類(lèi)型:int *p=&a(整形指針) ; char *p (字符指針); int( *func)(int)(函數(shù)指針);指針變量只能指向同種類(lèi)型的地址
是一個(gè)變量,這個(gè)變量只能存地址世澜,所占空間大小為8個(gè)字節(jié)乡小。整形指針數(shù)組中每個(gè)元素都是整形數(shù)組柿扣,字符型指針數(shù)組中每個(gè)元素都是字符串
3.指針的值:就是指向的內(nèi)存空間的首地址
注意:變量本身布占空間智什,他只是一種映射關(guān)系漆枚,映射到那個(gè)內(nèi)存空間竞川。
聲明一個(gè)變量:比如int a棋嘲;沒(méi)給值酒唉,沒(méi)有立刻分配內(nèi)存空間,即沒(méi)有地址
定義一個(gè)變量:比如int a=沸移;則立刻分配了內(nèi)存空間痪伦,并且賦值
4.指針指向的值(區(qū)域):(星號(hào)p)
5.指針的運(yùn)算:二級(jí)指針有兩個(gè)(星號(hào))
6.指針和數(shù)組
7.指針和函數(shù)
![CD}A7ZER4R_24%3(`~(4.png

#include<stdio.h>
int test(int a, int s){
        a+1;
    s+1;
    return a+1;
} 
    a+1;
    s+1;
    return a+1;
} 
//一個(gè)return只能返回一個(gè)值 
int test2(int a, int s){
    a+1;
    s+1;
    return a+1;
} 
int main()
{
    int money=10;//普通變量 
    int salary=10000;
    int*pa;//指針變量 
    char*pb;
    int a1[10];
    int*a2[2];
    cahr*a3[3];
    int test(int a);
    int(*test)(int a);
    printf("%d\n",sizeof(pa)) ;
    int temp=10;
    int *p=&temp;
    *p=20;
    return 0;
}

指針儲(chǔ)存的是地址
指向一個(gè)普通的變量:一級(jí)指針
直接改變 a=10 a的地址為0x100
間接改變 pa<=>0x100
pb==(0x200)=*(0x100)

pa為指針指向的變量
指向一個(gè)地址:二級(jí)指針
int a=20;
int pa=&a雹锣;
int pc)=&pa网沾;
int ** pd=&pc;
pd->訪問(wèn)pc的值
訪問(wèn)a: pa蕊爵,
pc绅这,
pd

普通指針變量
int *pa
常量指針(常量在前,不能變)
int a=20在辆;
int b=30证薇;
int const *pa=&a;
pa=50匆篓;->錯(cuò)誤 不能改變指針只想的變量的值
pa=&b浑度;->正確 可以改變指針的指向
指針常量(指針在前)數(shù)組就是指針常量
int
const pb=&a;
*pb=50鸦概;->可以 改變指針指向的變量的值
pb=&b箩张;->錯(cuò)誤 不能改變指針的指向
指向常量的常量指針
int const *const pc=&a;
*pc=50窗市;錯(cuò)誤 不能改變指針指向的變量的值
pc=&b先慷;錯(cuò)誤 不能改變指針的指向
int *ptemp=&a;
ptemp=20咨察;->錯(cuò)誤 指針變量只能存地址

指針(后續(xù))

普通指針:int char 等平時(shí)常用的论熙。
常量指針
比如int a = 20;int const *pa = &a://const就是常量(命名根據(jù)const和 *pa的前后順序看) 指向的變量的值不能變摄狱,但是它可以改變指向關(guān)系  比如你要再寫(xiě) *pa=50脓诡;就不對(duì)无午。但是可以pa = &b;
比如查詢(xún)學(xué)生信息祝谚,但是你不能改學(xué)生的信息宪迟,就用這個(gè)。
指針常量
int * const pb = &a交惯;指向關(guān)系永遠(yuǎn)不能變次泽,但是可以改變里面的值。比如不可以pb = &b席爽,但是可以*pb = 50箕憾;數(shù)組就是一個(gè)指針常量。
指向常量的常量指針
 int const const *pc = &a拳昌;或者const int *const pc =&a袭异;就是什么都不能變,也不能改變指向炬藤,也不能改變值御铃。
#include<stdio.h>
#include<stdlib.h>
void test (int a[]);
void test1 (int a[]);
//數(shù)組是一片連續(xù)的內(nèi)存空間,而指針只是一個(gè)變量沈矿,只不過(guò)這個(gè)變量只能存地址 共同點(diǎn):數(shù)組也可以用指針的方式去訪問(wèn) 
int main (void){
int num [] = {1,2,3,4,5,6,7,8,9};//num(數(shù)組名)沒(méi)有分配內(nèi)存空間 因?yàn)閟izeof(num) = 36上真;說(shuō)明數(shù)組名本身沒(méi)有分配內(nèi)存空間 
printf("%d\n",sizeof(num));//調(diào)用sizeof實(shí)際就是計(jì)算整個(gè)數(shù)組的所占的內(nèi)存大小 
int *p = num;
printf("%p\n",num);
printf("%p\n",num+1);//這個(gè)打印出來(lái)比上一個(gè)多4 
printf("%p\n",&num + 1);//這個(gè)打印出來(lái)比第一個(gè)多整個(gè)數(shù)組的字節(jié) 也就是說(shuō)(&a+1)就是指向下一個(gè)數(shù)組的起始地址。與(a+1)不同羹膳,(a+1)是下一個(gè)元素的起始地址睡互。
//test(num);
// test1(num);
//num[0] = 30;
//num[1] = 20;
//*num + 1 = 21;//這樣寫(xiě)不行 就相當(dāng)于 1 + 1 = 21 了 
/* *(num + 1) = 30;//注意加括號(hào) 
printf("%d\n",num[0] );
printf("%d\n",num[0] );
printf("%d\n",num[1] );
printf("%d\n",*(num + 1) );
printf("%p\n",num +1);*/
//num是指針常量,不能改變指向關(guān)系陵像,也就是說(shuō)不能用數(shù)組名進(jìn)行加減運(yùn)算就珠。比如不能寫(xiě)為num++; 
//num+1不是加了整個(gè)數(shù)組的空間 num本質(zhì)是地址醒颖,也就是p p+1那就是看指針的類(lèi)型了妻怎。 
/*  *num+1 = 20;這個(gè)有如下兩種可能 
*(num+1) = 20;//這個(gè)是對(duì)的 
(*num)+1 = 20;*///這是錯(cuò)的 
*p++ = 20;//有如下兩種情況 
//(*p)++
//*(p++)// 這個(gè)是對(duì)的 *p++等價(jià)于*(p++),p先與++結(jié)合泞歉。表示:取*p的值并返回逼侦,然后將p+1指向下一個(gè)地址 對(duì)指針進(jìn)行++就是看指針的類(lèi)型,整型指針加4腰耙,
//字符型加1榛丢,指針型加8. 
int a = (*p)++;
int b = *(p++);
printf("-----%d   %d\n",a,b);
char name[] = {'a','b','c','d'};
char *p1 = name;
char c = *(p++);
/[圖片上傳失敗...(image-8b4726-1575551295365)]

ar c = *(++p);
printf("%c\n",c);
printf("%d\n",num[0]);
system("pause");
return 0;
}
void test (int *p){//只是把整個(gè)數(shù)組的第一個(gè)首地址傳過(guò)去了 
printf("%d\n",sizeof(p));
}
void test1 (int a[]){//只是把整個(gè)數(shù)組的第一個(gè)首地址傳過(guò)去了 
printf("%d\n",sizeof(a));
}

a+i2+j 是用指針訪問(wèn)數(shù)組中元素的方法 2是每一行有幾列
比如a[3][2] = {{1,2},{3,4},{5,6}};訪問(wèn)第一個(gè)就是a[0][0]
例子:
p[0*2+0]

指針與函數(shù)

#include <stdio.h>

/*
 指針和函數(shù)的關(guān)系 
 作用:通過(guò)指針間接訪問(wèn)某個(gè)內(nèi)存 
*/ 
int add(int a, int b){
return a + b;
} 

//定義一個(gè)函數(shù) 什么情況下參數(shù)是指針
//這個(gè)函數(shù)會(huì)不會(huì)改變傳遞過(guò)來(lái)的數(shù)據(jù)本身 
//需要改變外部的值 就將這個(gè)變量定義為指針變量
void test(const int *pa, int *pb){
//(*pa)++;
(*pb)++;
printf("a = %d\n", *pa);
}

//函數(shù)接收數(shù)組時(shí),必須知道數(shù)組元素個(gè)數(shù)
//函數(shù)里面是通過(guò)指針變量來(lái)接收數(shù)組的地址
//指針變量無(wú)法確定指向的內(nèi)容的大小 
//訪問(wèn)數(shù)組有兩種方式
//1. num[3] 
//2. *(num+3)
void test2(int *p, int count){
for (int i = 0; i < count; i++){
p[i]++; //p[i] += 1;
//*(p + i)++; //*(p + i) += 1;
}
}

int main(){
int a = 10;
int b = 20;
test(&a, &b);
printf("a:%d b:%d\n", a, b);

int num[5] = {1,2,3,4,5};
test2(num,5);

for(int i = 0; i < 5; i++){
printf("%d ", num[i]);
}
return 0;
}
_PWGU8$%N$7{(3$~F9LB9}3.jpg
H_21EJMIHM62QEZV)`DTK97.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挺庞,一起剝皮案震驚了整個(gè)濱河市晰赞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖宾肺,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溯饵,死亡現(xiàn)場(chǎng)離奇詭異侵俗,居然都是意外死亡锨用,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)隘谣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)增拥,“玉大人,你說(shuō)我怎么就攤上這事寻歧≌普ぃ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵码泛,是天一觀的道長(zhǎng)猾封。 經(jīng)常有香客問(wèn)我,道長(zhǎng)噪珊,這世上最難降的妖魔是什么晌缘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮痢站,結(jié)果婚禮上磷箕,老公的妹妹穿的比我還像新娘。我一直安慰自己阵难,他們只是感情好岳枷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著呜叫,像睡著了一般空繁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朱庆,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天家厌,我揣著相機(jī)與錄音,去河邊找鬼椎工。 笑死饭于,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的维蒙。 我是一名探鬼主播掰吕,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颅痊!你這毒婦竟也來(lái)了殖熟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤斑响,失蹤者是張志新(化名)和其女友劉穎菱属,沒(méi)想到半個(gè)月后钳榨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纽门,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年薛耻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赏陵。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饼齿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蝙搔,到底是詐尸還是另有隱情缕溉,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布吃型,位于F島的核電站证鸥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏勤晚。R本人自食惡果不足惜枉层,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望运翼。 院中可真熱鬧返干,春花似錦、人聲如沸血淌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悠夯。三九已至癌淮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沦补,已是汗流浹背乳蓄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夕膀,地道東北人虚倒。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像产舞,于是被迫代替她去往敵國(guó)和親魂奥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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