C语言—— 字符串与指针

C语言—— 字符串与指针_第1张图片

 

⭐️1 字符串的表示形式

在C程序中,可以用两种方法访问一个字符串

(1)用字符数组存放一个字符串,然后输出该字符串。

(2)用字符指针指向一个字符串

⭐️2 字符指针作函数参数

将一个字符串从一个函数传递到另一个函数,可以用地址传递的方法,即用字符数组名作参数,也可以用指向字符的指针变量作参数。在被调用的函数中可以改变字符串的内容,在主调函数中可以得到改变了的字符串。

(1)用字符数组作参数

(2)形参用字符指针变量

⭐️3 对使用字符指针变量和字符数组的讨论


虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们两者之间是有区别的,不应混为一谈,主要有以下几点。

(1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址,决不是将字符串放到字符指针变量中。

(2)赋值方式。

(3)对字符指针变量赋初值。

(4)如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址,也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋予一个地址值,则它并未具体指向一个确定的字符数据。

(5)指针变量的值是可以改变的。

(6) 用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。

看下例题

例题:指针实现,判断一个子字符串是否在某个给定的字符串中出现。

#include
#include
int isSubstring(char *str,char *substr)
{
 char *ch,*s;
 int flag ;
 
 while(*str!='\0'){
  if(*str == *substr)
  {   
      s = str;
      ch = substr;
   while(*ch!='\0')
   {
     if(*s++ != *ch++ )
     { flag = 0; break;}
   }
   if(*ch=='\0')
    flag = 1;
  }
  str++;
 }
 return flag;
}
int main()
{ char s[]="Hello world!";
 char ch[10];
 
 printf("输入要查找的字串:");
gets(ch);
 if(isSubstring(s,ch))
   printf("%s是%s一个子串\n",ch,s);
 else
   printf("%s不是%s一个子串\n",ch,s); 
 return 0; 

 

C语言—— 字符串与指针_第2张图片

 

数组

#include

int main()

{

const char *str= "123abcd";

char copy_array[10];

int i=0;

for(i=0;i

{

copy_array[i] = *str++;

}

printf("%s\n",copy_array);

return 0;

}


 

你可能感兴趣的:(c语言)