一、字符串的引用方式
1.如果字符串存放在字符数组中可以用数组名和下标引用
char string[10] = "Hello word";
printf("%s",string);
2.用字符指针变量指向字符串常量,用字符指针引用字符串
char *strp = "Hello word";
printf("%s",strp);
//系统将字符串常量以字符数组形式保存在内存中,字符串末尾系统自动加了一个'\0'。再将字符数组的首地址赋给字符指针,从此字符指针就指向这个字符串的首地址。
二、字符串在函数之间的传递
// 1.形参、实参都是数组名
void function(char arr[])
{
. . . .
}
void main()
{
char arr[10] = "Hello word";
function(arr);
. . . .
}
// 2.形参、实参都是字符指针变量
void function(char *p)
{
. . . .
}
void main()
{
char *p = "Hello word";
function(p);
. . . .
}
// 3.形参是字符指针变量、实参是字符数组
// 4.形参是字符数组、实参是字符指针变量
三、使用字符数组与指针变量的比较
1.char *str = "Hello word"; //合法
char arr[10] = "Hello word"; //合法
char *str;
str = "Hello word"; //合法
car arr[10];
arr = "Hello word"; //不合法 arr是指针常量不能赋值
arr[10] = "Hello word" //不合法 应用 strcpy 进行赋值
2.char str[10] = "Hello";
char *p = "Word";
str[0] = 'h'; //合法 数组中个元素的值是可以改变的
p[0] = 'w'; //不合法 指针变量指向的字符串常量是不可以改变的
3. char *p = "a = %d";
printf(p,a); //合法 指针变量指向一个格式字符串,可以用它替代 printf
函数中的格式字符串
程序:
#include<stdio.h>
#include<string.h>
void examp1e1(char ar1[])
{
printf("%s\n长度为:%d\n大小为:%d\n\n",ar1,strlen(ar1),sizeof(ar1));
}
void example2(char *p)
{
printf("%s\n长度为:%d\n大小为:%d\n",p,strlen(p),sizeof(p));
}
void main()
{
char *str1 = "Hello word";
char str2[20] = "I am a boy";
char ar[20];
examp1e1(str1);
example2(str2);
}
转载于:https://blog.51cto.com/10757227/1704474