日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言指针操作(四)通过指针引用字符串

發布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言指针操作(四)通过指针引用字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。?

學習日記

目錄

學習日記

前言?編輯

一、字符串的引用方式

例1

例2

二、字符指針作函數參數

用函數調用實現字符串的復制。

例1

例2

例3

總結

三、使用字符指針變量和字符數組的比較?

?C語言指針操作


前言

????????指針這里分為八個小部分,分別是“指針變量”、“通過指針引用數組”、“*通過指針引用多維數組”、“通過指針引用字符串”、“*指向函數的指針”、“*返回指針值的函數”、“*指針數組和多重指針”、“*動態內存分配與指向它的指針變量” 。?

一、字符串的引用方式

?????????用字符數組存放一個字符串,可以通過數組名和下標引用字符串中一個字符,也可以通過數組名和格式聲明“%s”輸出該字符串。

????????用字符指針變量指向一個字符串常量,通過字符指針變量引用字符串常量。

例1

????????定義一個字符數組,在其中存放字符串″I love China!″,輸出該字符串和第8個字符。?

#include <stdio.h> int main() { char string[]="I love China!"; //定義字符數組stingprintf("%s\n",string); //用%s格式聲明輸出string,可以輸出整個字符串printf("%c\n",string[7]); //用%c格式輸出一個字符數組元素 return 0; }

string

I

string[0]

string[1]

l

string[2]

o

string[3]

v

string[4]

e

string[5]

string[6]

string(7)

C

string[7]

h

string[8]

i

string[9]

n

string[10]

a

string[11]

!

string[12]

\0

string[13]

????????在C語言中只有字符變量,沒有字符串變量。string被定義為一個指針變量,基類型為字符型。它只能指向一個字符類型數據,而不能同時指向多個字符數據。

????????可以通過字符指針變量輸出它所指向的字符串

printf(″%s\n″,string); //%s可對字符串進行整體的輸入輸出

????????%s是輸出字符串時所用的格式符,在輸出項中給出字符指針變量名string,則系統會輸出string所指向的字符串第1個字符,然后自動使string加1,使之指向下一個字符,再輸出該字符……如此直到遇到字符串結束標志′\0′為止。

????????注意,在內存中,字符串的最后被自動加了一個′\0′。?

對字符串中字符的存取,可以用下標方法,也可以用指針方法。?

例2

????????將字符串a復制為字符串b,然后輸出字符串b。用指針變量來處理。

#include <stdio.h> int main() { char a[]="I am a boy.",b[20],*p1,*p2;p1=a;p2=b;//p1,p2分別指向a數組和b數組中的第一個元素for(;*p1!='\0';p1++,p2++) //p1,p2每次自加1*p2=*p1;//將p1所指向的元素的值賦給p2所指向的元素*p2='\0'; //在復制完全部有效字符后加'\0'printf("string a is:%s\n",a); //輸出a數組中的字符printf("string b is:%s\n",b); //輸出b數組中的字符return 0; }

二、字符指針作函數參數

用函數調用實現字符串的復制。

例1

????????用字符數組名作為函數參數

#include <stdio.h> int main() { void copy_string(char from[], char to[]);char a[]="I am a teacher.";char b[]="You are a student.";printf("string a=%s\nstring b=%s\n",a,b);printf("copy string a to string b:\n");copy_string(a,b); //用字符數組名作為函數實參printf("\nstring a=%s\nstring b=%s\n",a,b);return 0; }void copy_string(char from[], char to[]) //形參為字符數組 { int i=0;while(from[i]!='\0'){ to[i]=from[i]; i++;}to[i]='\0'; }

例2

????????用字符型指針變量作實參

#include <stdio.h> int main() { void copy_string(char from[], char to[]); //函數聲明char a[]="I am a teacher."; //定義字符數組a并初始化char b[]="You are a student."; //定義字符數組b并初始化char *from=a,*to=b; //from指向a數組首元素,to指向b數組首元素 printf("string a=%s\nstring b=%s\n",a,b);printf("copy string a to string b:\n");copy_string(from,to); //實參為字符指針變量printf("\nstring a=%s\nstring b=%s\n",a,b);return 0; } void copy_string(char from[], char to[]) //形參為字符數組 { int i=0;while(from[i]!='\0'){ to[i]=from[i]; i++;}to[i]='\0'; }

例3

????????用字符指針變量作形參和實參

#include <stdio.h> int main() { void copy_string(char *from, char *to);char *a="I am a teacher."; //a是char*型指針變量char b[]="You are a student."; //b是字符數組char *p=b; //使指針變量p指向b數組首元素printf("string a=%s\nstring b=%s\n",a,b); //輸出a串和b串printf("copy string a to string b:\n");copy_string(a,p); //調用copy_string函數,實參為指針變量printf("\nstring a=%s\nstring b=%s\n",a,b); //輸出改變后的a串和b串return 0; } void copy_string(char *from, char *to) //定義函數,形參為字符指針變量 { for(;*from!='\0';from++,to++){ *to=*from;}*to='\0'; }

總結

????????字符指針作為函數參數時,實參與形參的類型有以下幾種對應關系:

實參

形參

字符數組名

字符數組名

字符數組名

字符指針變量

字符指針變量

字符指針變量

字符指針變量

字符數組名

三、使用字符指針變量和字符數組的比較?

????????字符數組由若干個元素組成,每個元素中放一個字符,而字符指針變量中存放的是地址(字符串第1個字符的地址),絕不是將字符串放到字符指針變量中。

????????賦值方式:可以對字符指針變量賦值,但不能對數組名賦值。(數組名是常量)?

初始化的含義

char *a="I love China!";======char *a;?? ? a=″I love China!″;?

????????存儲單元的內容。編譯時為字符數組分配若干存儲單元,以存放各元素的值,而對字符指針變量,只分配一個存儲單元(Visual C++為指針變量分配4個字節)。?

char *a,str[10]; a=str; scanf("%s",a);

????????指針變量的值是可以改變的,而字符數組名代表一個固定的值(數組首元素的地址),不能改變。?

????????字符數組中各元素的值是可以改變的(可以對它們再賦值),但字符指針變量指向的字符串常量中的內容是不可以被取代的(不能對它們再賦值)。

char a[]="House"; a[2]='r';

????????引用數組元素。對字符數組可以用下標法(用數組名和下標)引用一個數組元素(如a[5]),也可以用地址法(如*(a+5))引用數組元素a[5]。如果定義了字符指針變量p,并使它指向數組a的首元素,則可以用指針變量帶下標的形式引用數組元素(如p[5]),同樣,可以用地址法(如*(p+5))引用數組元素a[5]。?

????????用指針變量指向一個格式字符串,可以用它代替printf函數中的格式字符串。

char *format="a=%d,b=%f\n"; printf(format,a,b);

????????改變指針變量的值。?

#include <stdio.h> int main() { char *a="I love China!";a=a+7; //改變指針變量的值,即改變指針變量的指向printf("%s\n",a); //輸出從a指向的字符開始的字符串return 0; }

????????指針變量的值是可以改變的,而字符數組名代表一個固定的值(數組首元素的地址),不能改變。

????????指針變量a的值是可以變化的。printf函數輸出字符串時,從指針變量a當時所指向的元素開始,逐個輸出各個字符,直到遇'\0'為止。而數組名雖然代表地址,但它是常量,它的值是不能改變的。?

?C語言指針操作

C語言指針操作(一)指針變量

C語言指針操作(二)通過指針引用數組

C語言指針操作(三)*通過指針引用多維數組?

C語言指針操作(四)通過指針引用字符串

C語言指針操作(五)*指向函數的指針

C語言指針操作(六)*返回指針值的函數?

C語言指針操作(七)*指針數組和多重指針?

C語言指針操作(八)*動態內存分配與指向它的指針變量?

總結

以上是生活随笔為你收集整理的C语言指针操作(四)通过指针引用字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。