【漫漫轉(zhuǎn)碼路】Day32C++day05-創(chuàng)新互聯(lián)

函數(shù) 函數(shù)參數(shù)上傳數(shù)組

數(shù)組不能作為入口參數(shù)傳給函數(shù)
只能上傳地址

鳳城網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),鳳城網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為鳳城1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的鳳城做網(wǎng)站的公司定做!
//例如
int func(int a)  // 接收數(shù)組a
{return a;
}
int main()
{int a[3] = {1, 2, 3 };
	func(a);  // 上傳數(shù)組a
}

上述情況會報錯
只能通過上傳地址的方式來上傳數(shù)組

// 例如
int func(int *a)
int func(int a[])  //兩種方式等價

相對應(yīng)的

// 例如
(*p+i)=2;
p[i] = 2;  //兩者也等價
//例如
#include#include#includeusing namespace std;

void func(int a[])
{for (int i = 0;i< 3;i++)
	{a[i] = 10;
	}
}
int main()
{int a[3] = {1, 2, 3 };
	func(&a[0]);  //  注意此處寫成&a[0]也可以,表示指針放在0位
	for (int i = 0;i< 3;i++)
	{cout<< a[i]<< " ";
	}
}
函數(shù)內(nèi)部函數(shù)

函數(shù)內(nèi)部函數(shù)只能在函數(shù)內(nèi)部使用,在函數(shù)完成之后就被銷毀
從外部調(diào)用時非法的

//例如
#include#include#includeusing namespace std;

int* func(int a,int b)  //返回指針類型的
{int c = a + b;
	return &c;  // c是地址
}
int main()
{int a = 3;
	int b = 4;
	int *d = func(a,b);  // 用*d來接受
	cout<< *d;  // 輸出d
}

以上情況盡管可以運行,但是是非法的
不可以對函數(shù)內(nèi)部變量內(nèi)存進行操作
函數(shù)內(nèi)部變量的內(nèi)存地址不可隨便輸出
不可以輸出一個訪問函數(shù)內(nèi)部變量的引用

容易發(fā)生崩潰及程序錯亂

字符串

單引號為字符類型
雙引號為字符串類型
字符串存儲在數(shù)組中;
需要提前開辟一塊足夠大的內(nèi)存空間;
存儲字符串的數(shù)組的大小要大于字符串長度+1;
在這里插入圖片描述
存儲三個字符串a(chǎn)bc的數(shù)組a[3]是不夠的,需要至少四個;

//字符串的兩種創(chuàng)建形式
int main()
{char a[4] = "abc";
	const char *p = "123";
}
字符串結(jié)尾\0

之所以說一個"abc"字符串需要至少四個空間,是因為字符串的結(jié)尾都是用‘\0’來表示的,所有字符串的結(jié)尾都認為有一個‘\0’,不會顯示出來
注意,‘\0’一定是單引號!

//例如
#include#include#includeusing namespace std;

int main()
{char a[4] = "abc";
	
	cout<< a[3]<< "\n";  // "abc"索引只到2,但是輸出索引3不會報錯,但是輸出結(jié)果什么也沒有
	cout<< (int)a[3];  // 強制類型轉(zhuǎn)換,如果轉(zhuǎn)換成數(shù)字,會發(fā)現(xiàn)是0
}
//顯示

0
//例如
int main()
{char a[100] = "apple";
	a[3] = '\0';  //在索引為3也就是,l的位置重新賦值為'\0'
	cout<< a<< "\n";
	cout<< a[4];  // 字符串雖然被截斷,但是截斷后面的字符串還是可以索引到
	
}
//顯示
app  //結(jié)果只顯示'\0'之前的,表示在'\0'就停止了
e  //截斷后面的字符串還是可以索引到

聲明的時候手動添加’\0’

/例如
int main()
{char a[100] = "app\0le";
	cout<< a<< "\n";
	cout<< a[4];
}
//顯示
app  //可以看到,在聲明的時候,如果加入了'\0',則系統(tǒng)認為該字符串在此處停止
l  // 但是后面的字符串還是能夠索引得到
計算字符串長度
//例如
int len(char a[])  //注意此處上傳char a[],不是int a[]
{int i = 0;
	for (;a[i] != '\0';i++)  //循環(huán),在a[i] == '\0'處結(jié)束,
	{	}
	return i;
}
int main()
{char a[100] = "apple";
	int x = len(a);
	cout<< x ;
}
//顯示
5
字符串拼接
//例如
int len(char a[])  // 求長度
{int i = 0;
	for (;a[i] != '\0';i++)
	{}
	return i;
}
void sp(char a[], char b[],char outc[])  //字符串拼接
{int i, j;
	for (i = 0;a[i] != '\0';i++)
	{outc[i] = a[i];
	}
	for (j = 0;b[j] != '\0';j++)
	{outc[j + i] = b[j];
	}
	outc[i + j] = '\0';
}

int main()
{char a[100] = "apple";
	char b[100] = "orange";

	char c[100];
	sp(a, b, c);
	cout<< c<< "\n";

	int x = len(c);
	cout<< x ;
}
//顯示
appleorange
11
字符串函數(shù)

需要在前面加聲明,才能使用這些函數(shù)

#define _CRT_SECURE_NO_WARNINGS
strcat

strcat(a,b):可以將字符串a(chǎn)和字符串b拼接起來,返回一個指向返回值的指針

//例如
int main()
{char a[100] = "apple";
	char b[100] = "orange";
	char *p;
	p = strcat(a, b);  //返回值是個指針
	cout<< p;
}
//顯示
appleorange
strcpy

char * strcpy(char * strDest,const char * strSrc);將const char * strSrc(源地址:被復(fù)制的字符串的首地址,用const修飾,避免修改掉被拷貝的字符串),復(fù)制到char * strDest(目標字符串的首地址)中去,返回的是目標字符串的首地址
strcpy(a,b)將b的值拷貝到a中,會將a的值覆蓋

//例如
int main()
{char a[100] = "apple";
	char b[100] = "orange";
	char c[100] = "a";
	char *p;
	p = strcpy(a, c);
	cout<< p<<"\n";
	cout<< a;
}
//顯示
a  // 覆蓋掉a原來的值
a  // 輸出a,發(fā)現(xiàn)也是一樣
strcmp

extern int strcmp(const char *s1,const char *s2);
strcmp(a,b)比較兩個字符串,如果a=b則返回0,a>b,則返回正數(shù),a

//例如
int main()
{char c[100] = "a";
	char d[100] = "b";
	char e[100] = "c";
	char *p;
	int m = strcmp(c, d);
	int n = strcmp(e, c);
	cout<< m<<"\n";
	cout<< n<< "\n";
	cout<< strcmp(c, c)<< "\n";
}
//顯示
-1  //右大于左
1  //左大于右
0  //字符串相同
strlen

strlen(a);返回字符串長度;

//例如
int main()
{char a[100] = "apple";
	int x = strlen(a);
	cout<< x<< "\n";
}
/顯示
5
大小寫轉(zhuǎn)換
//例如
void change(char *a)
{for (int i = 0;a[i] != '\0';i++)
	{if (a[i] >='a' &&a[i]<='z')
		{	a[i] = a[i] - 'a' + 'A';
		}
		else if (a[i] >='A' &&a[i]<='Z')
		{	a[i] = a[i] - 'A' + 'a';
		}
	}
}

int main()
{char a[100] = "apPlE";
	
	change(a);
	for (int i = 0;a[i] != '\0';i++)
	{cout<< a[i];
	}
//顯示
APpLe
字符串變成數(shù)字 手寫
//例如
int sTi(char* a)
{int n;
	int res = 0;
	int mi = 1;

	for (n = 0;a[n] != '\0';n++)
	{}
	// n就是字符串長度

	for (int i = n - 1;i >= 0;i--)
	{res += (a[i] - '0') * mi;
		mi = mi * 10;
	}
	return res;
}
int main()
{char a[100] = "315426";
	int d = sTi(a);
	cout<< d;
// 顯示
315426
函數(shù)atoi和atof

atoi:將字符串轉(zhuǎn)換成為數(shù)字,整型;
atof:將字符串轉(zhuǎn)換成為數(shù)字,浮點型;

//例如
int main()
{char a[100] = "315426";
	int d = atoi(a);
	float e = atof(a);
	cout<< d<< "\n";
	cout<< e;
}
數(shù)字轉(zhuǎn)字符串
//例如
void iTs(int a, char* res)
{int x[100];
	int m = 0;
	while (a != 0)  //用while循環(huán)得到長度和數(shù)組倒序數(shù)組
	{int b = a % 10;
		a = a / 10;
		x[m] = b;
		m += 1;
	}
	for (int i = 0;i< m;i++)  //將倒序數(shù)組倒序放到字符串中去
	{res[m - 1 - i] = '0' + x[i];
	}
	res[m] = '\0';
}
int main()
{int a = 13546;
	char res[100];
	iTs(a, res);
	//cout<< m;
	for (int i = 0;res[i] != '\0';i++)
	{cout<
//顯示
13546
string

前面需要聲明

#includeusing namespace std;

利用string變量可以實現(xiàn)字符串相加

//例如
int main()
{string s = "abc";  //聲明成為string變量可以直接實現(xiàn)字符串拼接
	string a = "123";
	cout<< s + a;
}
//顯示
abc123
例題

有一個字符串 “I am a good boy. I like sports.”,找出其中出現(xiàn)次數(shù)最多的字母,并且輸出它的出現(xiàn)次數(shù)

//例如
void FindMostTimesChar(char* pIn, char& outChar, int& outTimes)
{//一個數(shù)組初始化為0
	int x[200];
	for (int i = 0; i< 200; i++)
	{x[i] = 0;
	}
	// 將大寫字母和小寫字母的出現(xiàn)次數(shù)存放在數(shù)組中
	for (int i = 0;pIn[i] != '\0';i++)
	{if (pIn[i] >= 'a' && pIn[i]<= 'z')
		{	int q = pIn[i] - 'a'; //數(shù)組x的索引0-25存小寫字母;
			x[q] += 1;
		}
		else if (pIn[i] >= 'A' && pIn[i]<= 'Z')
		{	int q = pIn[i] - 'A'; //數(shù)組x的索引26-51存大寫字母出現(xiàn)次數(shù);
			x[q + 26] += 1;
		}
	}
	//找到大值,也就是出現(xiàn)次數(shù)最多的字母的索引和次數(shù)
	int maxnum = 0;  // 大出現(xiàn)的次數(shù)
	int maxid = 0;  // 對應(yīng)的索引,也就是是哪個字母
	for (int i = 0;i< 52;i++)
	{if (x[i] >maxnum)
		{	maxnum = x[i];
			maxid = i;
		}
	}
	//按照規(guī)則還原成字母和次數(shù)
	if (maxid >25)
	{outChar = 'A' + (maxid - 26);
		outTimes = maxnum;
	}
	else if (maxid< 25)
	{outChar = 'a' + maxid;
		outTimes = maxnum;
	}

}

int main()
{char a[100] = "I am a good boy. I like sports.";
	char res;
	int num;
	FindMostTimesChar(a, res, num);
	cout<< res<< " "<< num;
}
//顯示
o 4

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前標題:【漫漫轉(zhuǎn)碼路】Day32C++day05-創(chuàng)新互聯(lián)
地址分享:http://bm7419.com/article26/dsegjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、手機網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司電子商務(wù)、軟件開發(fā)、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)