一、字符串的引用方式
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); }
时间: 2024-10-15 17:21:02