C語(yǔ)言怎樣用指針指向字符串
字符串的定義和使用
part 1 指針定義字符串
指針定義字符串,輸出它的地址:
#include<stdio.h>
int main()
{
char *s1="Hello World";
char *s2="Hello World";
printf("0x%p\n",s1);
printf("0x%p\n",s2);
}
這時(shí),出現(xiàn)地址相同的情況,說(shuō)明這里的“Hello World”只是存儲(chǔ)在一個(gè)臨時(shí)的地方,兩個(gè)指針同時(shí)指向了這個(gè)“Hello World”,這時(shí)字符串不可寫。
什么叫不可寫?看下面。
part 2 數(shù)組定義字符串
#include<stdio.h>
int main()
{
char s3[]="Hello World";
char* s;
s=s3;
printf("s3:0x%p\n",s3);
printf("s:0x%p\n",s);
s3[0]='B';
printf("%c\n",s3[0]);
printf("%s\n",s3);
printf("%s\n",s);
printf("%d\n",sizeof(s3));
}
用數(shù)組定義字符串,字符串可寫,這時(shí)s3[0]=‘B’,結(jié)果可以改變就叫做字符串可寫。part1里的字符串不能改變,s3[0]='B’語(yǔ)句沒(méi)有作用。
這里用數(shù)組定義字符串后,再用指針指向這個(gè)字符串,和part1相比,地址復(fù)雜了許多,說(shuō)明這個(gè)地址不是臨時(shí)地址了。
計(jì)算字符串長(zhǎng)度12,Hello World+\0,\0也占有字符串的一位,但是不會(huì)顯示出來(lái)。
part 3 指針指向字符串
下面給出指針指向字符串的兩種方式:
\0才代表一個(gè)字符串的結(jié)束,\0才代表一個(gè)字符串的結(jié)束,\0才代表一個(gè)字符串的結(jié)束。它是數(shù)組的一部分。
#include<stdio.h>
int main()
{
char b[]={'t','i','t','t','l','e','\0'};
char* a;
a=b;
printf("%s\n",a);
}
//或
#include<stdio.h>
int main()
{
char b[]="tittle";//這和上面char b[]={'t','i','t','t','l','e','\0'};是相等的。
char* a;
a=b;
printf("%s\n",a);
}
當(dāng)你不需要對(duì)字符串改變時(shí),臨時(shí)用指針定義也可以的:
#include<stdio.h>
int main()
{
char *b="tittle";
char *a;
a=b;
printf("%s\n",a);
}
下面上一個(gè)帶有思考性的問(wèn)題,下面的指針事實(shí)上是直接指向一個(gè)數(shù)組元素‘s’的,數(shù)組最后沒(méi)有‘\0’。
當(dāng)你硬要以字符串形式輸出時(shí):
#include<stdio.h>
int main()
{
char n[1]={'s'};
char* a;
a=n;
printf("%c\n",a[0])
printf("%s\n",a);
} 
結(jié)果出錯(cuò)。
修正:
#include<stdio.h>
int main()
{
char n[]={'s','\0'};
char* a;
a=n;
printf("%c\n",a[0])
printf("%s\n",a);
} 
這個(gè)結(jié)果正確,指針指向了數(shù)組中的字符串。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++ sdl實(shí)現(xiàn)渲染旋轉(zhuǎn)視頻的方法分享
一般情況下播放視頻時(shí)不需要旋轉(zhuǎn),但是如果是移動(dòng)端錄制的視頻有時(shí)會(huì)出現(xiàn)rotate參數(shù),且視頻寬高也是互換的。所以本文為大家準(zhǔn)備了利用sdl實(shí)現(xiàn)渲染旋轉(zhuǎn)視頻的方法,需要的可以參考一下2022-12-12
opengl實(shí)現(xiàn)直線掃描算法和區(qū)域填充算法
這篇文章主要為大家詳細(xì)介紹了opengl實(shí)現(xiàn)直線掃描算法和區(qū)域填充算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
Qt圖形圖像開發(fā)之高性能曲線圖模塊QCustomplot庫(kù)詳細(xì)使用方法與實(shí)例(支持動(dòng)、靜曲線圖)
這篇文章主要介紹了Qt圖形圖像開發(fā)之高性能曲線圖模塊QCustomplot庫(kù)詳細(xì)使用方法與實(shí)例(支持動(dòng)、靜曲線圖),需要的朋友可以參考下2020-03-03
詳解C 語(yǔ)言項(xiàng)目中.h文件和.c文件的關(guān)系
這篇文章主要介紹了詳解C 語(yǔ)言項(xiàng)目中.h文件和.c文件的關(guān)系的相關(guān)資料,需要的朋友可以參考下2017-05-05

