欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言怎樣用指針指向字符串

 更新時間:2023年10月12日 17:06:09   作者:耳朵用來聽自己的心靈  
這篇文章主要介紹了C語言怎樣用指針指向字符串問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

字符串的定義和使用

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);
}

這時,出現(xiàn)地址相同的情況,說明這里的“Hello World”只是存儲在一個臨時的地方,兩個指針同時指向了這個“Hello World”,這時字符串不可寫。

什么叫不可寫?看下面。

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ù)組定義字符串,字符串可寫,這時s3[0]=‘B’,結(jié)果可以改變就叫做字符串可寫。part1里的字符串不能改變,s3[0]='B’語句沒有作用。

這里用數(shù)組定義字符串后,再用指針指向這個字符串,和part1相比,地址復(fù)雜了許多,說明這個地址不是臨時地址了。

計算字符串長度12,Hello World+\0,\0也占有字符串的一位,但是不會顯示出來。

part 3 指針指向字符串

下面給出指針指向字符串的兩種方式:

\0才代表一個字符串的結(jié)束,\0才代表一個字符串的結(jié)束,\0才代表一個字符串的結(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)你不需要對字符串改變時,臨時用指針定義也可以的:

#include<stdio.h>
int main()
{
char *b="tittle";
char *a;
a=b;
printf("%s\n",a);
}

下面上一個帶有思考性的問題,下面的指針事實上是直接指向一個數(shù)組元素‘s’的,數(shù)組最后沒有‘\0’。

當(dāng)你硬要以字符串形式輸出時:

#include<stdio.h>
int main()
{
char  n[1]={'s'}; 
char* a;
a=n;
printf("%c\n",a[0])
printf("%s\n",a);
} 

結(jié)果出錯。

修正:

#include<stdio.h>
int main()
{
char  n[]={'s','\0'}; 
char* a;
a=n;
printf("%c\n",a[0])
printf("%s\n",a);
} 

這個結(jié)果正確,指針指向了數(shù)組中的字符串。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論