天天看點

關于字元變量的一些總結

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">char 表示的是一個字元變量,可以按照這種方式定義: char ch1='a';</span>
           

char* 表示的是一個字元類型指針,可以按照如下方式定義:char* ch1="abcd"; 這裡ch1存儲的是該字元串文字量的a的指針,實驗如下:

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
	char* ch1="abcd";
	cout<<ch1<<endl;
	cout<<*ch1<<endl;
}
           

輸出結果為:

關于字元變量的一些總結
關于字元變量的一些總結

有上述實驗可知,ch1存放的是文本字元串的頭指針,當用*ch1輸出時,相當于輸出指針ch1指向的内容

繼續做一個關于字元串的實驗,代碼如下:

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
	char ch1[]={'a','b','c'};
	char ch2[]="def";
	for(int i=0;i<3;i++)
	{
		cout<<"ch1[i]輸出"<<ch1[i]<<endl;
		cout<<"*ch1輸出"<<*ch1<<endl;
		cout<<"ch1輸出"<<ch1<<endl;
	}
		for(int j=0;j<3;j++)
	{
		cout<<"ch2[i]輸出"<<ch2[j]<<endl;
		cout<<"*ch2輸出"<<*ch2<<endl;
		cout<<"ch2輸出"<<ch2<<endl;
	}

}
           

結果如下:

關于字元變量的一些總結
關于字元變量的一些總結

由此可見,數組名也是指代該字元串的首個字元的位址,而且注意文本字元串的特殊性:ch="abc"

另外又做了一個關于字元串的實驗

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
	char* ch1="abc";
	char* ch2="abc";
	for(int i=0;i<3;i++)
	{
		cout<<*ch1<<endl;
		ch1++;
	}
		
	for(int j=0;j<3;j++)
	{
		cout<<ch2<<endl;
		ch2++;
	}

}
           

實驗結果為:

關于字元變量的一些總結
關于字元變量的一些總結

由此可見,當定義char* ch1為文本字元串“abc”的時候,傳回的是文本字元串"abc"的首位址,當用cout輸出ch1時,輸出的是整個文本字元串

而當用ch1++将ch1的位址後移的時候,則此時ch1指向的是後續字元指針

關于字元變量的一些總結