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