C - 指针和字符串

时间:2020-02-23 14:31:59  来源:igfitidea点击:

在本教程中,我们将学习使用C编程语言中的指针存储字符串。

我们知道字符串是我们在数组中保存的字符序列。
在C编程语言中 \0null字符标记字符串的末尾。

创建字符串

在以下示例中,我们正在创建一个字符串 str使用 char字符阵列大小6. char str[6] = "Hello";上述字符串可以如下内存以在存储器中表示。

字符串中的每个字符 str取1字节的内存空间。

为字符串创建指针

字符串的变量名称 str保存阵列的第一个元素的地址,即,它点在起始内存地址点。

所以,我们可以创建一个字符指针 ptr并存储字符串的地址 str在它中变量。
这样,PTR将指向String str。

在以下代码中,我们正在分配字符串的地址 str到指针 ptrchar *ptr = str;我们可以代表字符指针变量 ptr如下。

指针变量 ptr被分配的内存地址8000,它保存字符串变量的地址 str即1000。

通过指针访问字符串

访问和打印串的元素,我们可以使用循环并检查 \0null字符。

在以下示例中,我们正在使用 while循环打印字符串变量的字符 str

#include <stdio.h>
int main(void) {
    
  //string variable
  char str[6] = "Hello";
  
  //pointer variable
  char *ptr = str;
  
  //print the string
  while(*ptr != '
#include <stdio.h>
int main(void) {
    
  //pointer variable to store string
  char *strPtr = "Hello";
  
  //temporary pointer variable
  char *t = strPtr;
  
  //print the string
  while(*t != '
char city[4][12] = {
  "Chennai",
  "Kolkata",
  "Mumbai",
  "New Delhi"
};
') { printf("%c", *t); //move the t pointer to the next memory location t++; } return 0; }
') { printf("%c", *ptr); //move the ptr pointer to the next memory location ptr++; } return 0; }

使用指针存储字符串

通过创建在一些存储器位置存储的字符串值的字符指针来实现相同的结果。

在以下示例中,我们使用的是字符指针变量 strPtr存储字符串值。

char *cityPtr[4] = {
  "Chennai",
  "Kolkata",
  "Mumbai",
  "New Delhi"
};

笔记!在上面的代码中,我们正在使用另一个字符指针 t要打印字符串的字符,因为我们不希望丢失字符串"Hello"的起始地址,该字符串"hello"在指针变量中保存 strPtr

在上图中,字符串"Hello"保存在存储器位置5000至5005中。

指针变量 strPtr处于存储器位置8000并且指向字符串地址5000。

临时变量也被分配了字符串的地址,因此,它也保持了值5000,并在字符串"hello"的起始内存位置处的点。

串数量

我们可以创建二维数组并保存其中的多个字符串。

例如,在给定代码中,我们将在字符串数组中存储4个城市名称 city

#include <stdio.h>
int main(void) {
    
  //array of pointers
  char *cityPtr[4] = {
    "Chennai",
    "Kolkata",
    "Mumbai",
    "New Delhi"
  };
  
  //temporary variable
  int r, c;
  
  //print cities
  for (r = 0; r < 4; r++) {
    c = 0;
    while(*(cityPtr[r] + c) != '
Chennai
Kolkata
Mumbai
New Delhi
') { printf("%c", *(cityPtr[r] + c)); c++; } printf("\n"); } return 0; }

我们可以表示城市阵列如下。

这种方法的问题是我们正在将4x12 = 48字节内存分配给城市阵列,我们只使用33个字节。

我们可以使用指针保存那些未使用的内存空间,如下所示。

##代码##

在上面的代码中,我们正在创建一个字符指针数组 cityPtr4大小存储四个城市的名称。

我们可以表示指针数组如下。

上面的指针阵列可以如下存储在存储器中。

cityPtr指针变量被分配给存储器地址8000到8007.假设整数地址值需要2个字节空间。
所以,每个指针得到2个字节。

城市的名称保存在地点1000,2000,3000和4000。

访问指针数组指向的值

访问和打印指向指针数组指向的值,我们在以下示例中显示了循环的帮助。

##代码## ##代码##

在上面的代码中,我们正在使用 r变量访问指针的每一行。
我们正在使用 c变量以访问所选行中的每个字符。