1. 前言
C語(yǔ)言函數(shù)里最常用就是指針傳參和返回地址,特別是字符串處理中,經(jīng)常需要封裝各種功能函數(shù)完成數(shù)據(jù)處理,并且C語(yǔ)言標(biāo)準(zhǔn)庫(kù)里也提供了string.h 頭文件,里面包含了很多字符串處理函數(shù);這些函數(shù)的參數(shù)和返回值幾乎都是指針類型。這篇文章就介紹如何使用指針作為函數(shù)參數(shù)、并且使用指針作為函數(shù)返回值。
下面通過幾個(gè)示例代碼來演示用法。
2. 通過指針間接修改主函數(shù)里局部變量空間的值
#include
#include
void func(int *p);
int main()
{
int a=100;
func(&a);
printf("a=%d\n",a); //200
return 0;
}
void func(int *p)
{
printf("p=%d\n",*p);
*p=200;
}
3. 在子函數(shù)里通過指針類型間接交換main函數(shù)里局部變量空間的值
#include
#include
void func(int *a,int *b);
int main()
{
int a=100,b=200;
func(&a,&b); //func(100,200)
printf("a=%d,b=%d\n",a,b);
return 0;
}
void func(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
}
//return語(yǔ)句只能返回一個(gè)值
//如果函數(shù)想返回多個(gè)值,可以使用指針(形參)實(shí)現(xiàn)。
4. 函數(shù)返回指針類型
#include
#include
char *func(char *p);
int main()
{
char str[]="1234567890";
char *p;
p=func(str);
printf("%s\n",p); //
return 0;
}
char *func(char *p)
{
p+=3; //p向后偏移3個(gè)字節(jié)
return p;
}
5. 編寫一個(gè)計(jì)算字符串長(zhǎng)度的函數(shù)
函數(shù)功能: 傳入字符串,返回字符串的長(zhǎng)度。
與strlen函數(shù)功能一樣即可。
#include
#include
int my_strlen(char *p); //函數(shù)聲明
int main()
{
char buff[100];
int len;
printf("請(qǐng)輸入字符串:");
scanf("%s",buff);
len=my_strlen(buff);
printf("len=%d\n",len);
return 0;
}
//每個(gè)函數(shù)的功能要單一
//計(jì)算字符串長(zhǎng)度。 字符串特點(diǎn)結(jié)尾是有'\0'
//"1234567890"
int my_strlen(char *p)
{
char *str=p;
while(*str++!='\0'){}
return str-p-1;
}
6. 編寫一個(gè)字符串排序函數(shù)
函數(shù)功能: 傳入字符串,在函數(shù)里實(shí)現(xiàn)字符串從大到小或者小到大排序。
注意: 從大到小或者小到大排序可以通過函數(shù)形參區(qū)分。
#include
#include
int my_strlen(char *p); //函數(shù)聲明
void str_sort(char *p,char flag);//函數(shù)聲明
int main()
{
char buff[100];
int len;
printf("請(qǐng)輸入字符串:");
scanf("%s",buff);
//進(jìn)行排序
str_sort(buff,0);
printf("從小到大排序=%s\n",buff);
str_sort(buff,1);
printf("從大到小排序=%s\n",buff);
return 0;
}
//每個(gè)函數(shù)的功能要單一
//計(jì)算字符串長(zhǎng)度。 字符串特點(diǎn)結(jié)尾是有'\0'
//"1234567890"
int my_strlen(char *p)
{
char *str=p;
while(*str++!='\0'){}
return str-p-1;
}
/*
函數(shù)功能: 實(shí)現(xiàn)字符串排序.支持從小到大或者大到小
函數(shù)形參:
char *p 將要排序的字符串
char flag 選擇排序方式 0表示從小到大排序 1表示大到小排序
*/
void str_sort(char *p,char flag)
{
int len;
int i,j,tmp;
len=my_strlen(p);
for(i=0;ip[j+1])
{
tmp=p[j];
p[j]=p[j+1];
p[j+1]=tmp;
}
}
}
}
}
//unsigned char a; // 0~255 占1 =8位 1111 11111
//char a; //-128 ~ +127
;i++)>
7.變量默認(rèn)的系統(tǒng)初始化值
#include
#include
int a1;
int main()
{
int a2;
static int a3;
printf("a1=%d\n",a1); //0
printf("a2=%d\n",a2); //隨機(jī)值
printf("a3=%d\n",a3); //0
return 0;
}
/*
全局變量默認(rèn)值是0
局部變量默認(rèn)值是隨機(jī)值(系統(tǒng)沒有賦值)
靜態(tài)變量默認(rèn)值是0
*/
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7646瀏覽量
146096 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4421瀏覽量
67815 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71947
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
C語(yǔ)言指針作為形參怎么改變其指向的地址
]?=?{1,2,3};void?fcn(參數(shù));void? main (){????int*?a;????fcn(輸入?yún)?shù)a)} 執(zhí)行完fcn后,使參數(shù)的地址改變,這個(gè)功能怎么來實(shí)現(xiàn)呢? 首先說明結(jié)論:使用二級(jí)指針。 為了更好的理解這個(gè)問題,我們首先來學(xué)習(xí)一下指針最經(jīng)典
函數(shù)的實(shí)參與形參
和實(shí)參出現(xiàn)不同類型時(shí),則按照不同類型數(shù)值的賦值規(guī)則進(jìn)行轉(zhuǎn)換。主調(diào)函數(shù)在在調(diào)用函數(shù)之前,應(yīng)對(duì)被調(diào)函數(shù)做原型聲明。實(shí)參向
發(fā)表于 10-18 20:15
指針作為函數(shù)參數(shù)
指針作為函數(shù)參數(shù)
大多數(shù)C程序員開始使用指針時(shí)是用它們實(shí)現(xiàn)函數(shù)的參數(shù),所謂可變參數(shù)。為了理解可
發(fā)表于 07-29 11:49
?3020次閱讀
C語(yǔ)言指針函數(shù)和函數(shù)指針詳細(xì)介紹
C語(yǔ)言指針函數(shù)和函數(shù)指針詳細(xì)介紹。。。。。。。
發(fā)表于 03-04 15:27
?5次下載
c語(yǔ)言函數(shù)指針定義,指針函數(shù)和函數(shù)指針的區(qū)別
往往,我們一提到指針函數(shù)和函數(shù)指針的時(shí)候,就有很多人弄不懂。下面就由小編詳細(xì)為大家介紹C語(yǔ)言中
發(fā)表于 11-16 15:18
?4294次閱讀
C語(yǔ)言教程之函數(shù)指針變量與指針函數(shù)的區(qū)別(下篇)
z=(*pfun)(x,y); //調(diào)用函數(shù)指針變量,實(shí)參x和y的值傳遞給形參a和b
printf(“max=%dn”,z); //形
發(fā)表于 05-22 07:30
?2248次閱讀
C語(yǔ)言總結(jié)_數(shù)組與函數(shù)傳參練習(xí)題
字符串標(biāo)準(zhǔn)處理函數(shù)介紹(string.h)、指針和數(shù)組當(dāng)做函數(shù)形參,指針定義、
C語(yǔ)言-函數(shù)的定義、聲明、傳參
C語(yǔ)言里函數(shù)是非常重要的知識(shí)點(diǎn),一個(gè)完整的C語(yǔ)言程序就是由主函數(shù)和各個(gè)子
C語(yǔ)言-函數(shù)的可變形參(不定形參)
這篇文章介紹C語(yǔ)言函數(shù)的不定參數(shù)、可變參數(shù) 形參,實(shí)現(xiàn)printf一樣的傳參效果。
C語(yǔ)言-void類型作為萬(wàn)能指針類型
void類型在基本數(shù)據(jù)類型里是`空類型`,`無類型`; void類型常用來當(dāng)做函數(shù)的返回值,
數(shù)組/指針的傳參問題
自定義函數(shù)里形參的類型,要和函數(shù)調(diào)用中傳過去的實(shí)參類型相對(duì)應(yīng)
指針進(jìn)階第五站:函數(shù)指針!
定義一個(gè)函數(shù)指針,指向的函數(shù)有兩個(gè)int形參并且返回一個(gè)函數(shù)
發(fā)表于 08-17 15:58
?2200次閱讀
C語(yǔ)言函數(shù)參數(shù)介紹
C語(yǔ)言數(shù)組元素作函數(shù)實(shí)參
數(shù)組元素可以用作函數(shù)實(shí)參,不能用作形參。
C語(yǔ)言數(shù)組元素的指針
C語(yǔ)言調(diào)用函數(shù)時(shí)虛實(shí)結(jié)合的方法都是采用“值傳遞”方式,當(dāng)用變量名作為函數(shù)參數(shù)時(shí)傳遞的是變量的值,當(dāng)用數(shù)組名
函數(shù)類型和函數(shù)指針類型的區(qū)別
平時(shí)用的更多的是函數(shù)指針類型,比如作為函數(shù)參數(shù)傳入回調(diào)函數(shù)等等。實(shí)際上
發(fā)表于 10-24 14:27
?985次閱讀
C語(yǔ)言-指針作為函數(shù)形參類型
評(píng)論