1. 前言
C語(yǔ)言函數(shù)里最常用就是指針傳參和返回地址,特別是字符串處理中,經(jīng)常需要封裝各種功能函數(shù)完成數(shù)據(jù)處理,并且C語(yǔ)言標(biāo)準(zhǔn)庫(kù)里也提供了string.h
頭文件,里面包含了很多字符串處理函數(shù);這些函數(shù)的參數(shù)和返回值幾乎都是指針類型。這篇文章就介紹如何使用指針作為函數(shù)參數(shù)、并且使用指針作為函數(shù)返回值。
下面通過(guò)幾個(gè)示例代碼來(lái)演示用法。
2. 通過(guò)指針間接修改主函數(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ù)里通過(guò)指針類型間接交換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)字符串從大到小或者小到大排序。
注意: 從大到小或者小到大排序可以通過(guò)函數(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
*/
審核編輯:湯梓紅
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136683 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4327瀏覽量
62569 -
指針
+關(guān)注
關(guān)注
1文章
480瀏覽量
70551
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論