龙空技术网

C+|用指针指向字符串字面量、字符数组及字符指针数组

小智雅汇 240

前言:

今天各位老铁们对“c语言指针指向字符串常量怎么表示”大约比较着重,同学们都需要知道一些“c语言指针指向字符串常量怎么表示”的相关知识。那么小编在网上网罗了一些有关“c语言指针指向字符串常量怎么表示””的相关知识,希望看官们能喜欢,大家一起来了解一下吧!

指针可以指向一个字符串字面量,可以指向一个字符数组,可以指向一块动态分配的内存单元:

char *s1, *s2, *s3 = “abcde”;

char ch[] = “fff”;

s1 = ch;

s2 = new char[10];

strcpy(s2, “fgh”);

用指针表示的字符串可以直接作为字符串操作函数的参数。但必须注意,如果该指针指向的是一个字符串常量时,则使用是受限的。如不能作为strcpy的第一个参数,不能用下标的方法去修改其中的元素,所以一般都冠以const,如const char *s3 = “abcde”;

由于在C++中,数组名被解释成指向数组首地址的指针。因此,字符串是用一个指针变量表示,我们可以把此指针变量解释成数组的首地址,通过下标访问字符串中的字符。如string[3]的值是d同时,与上述直接指向一个常量不同,可以使用下标的形式来修改字符数组的元素。

字符串作为字符数组传递时不需要指定长度。因为字符串操作的结束是依据‘\0,如一个记录串中单词的个数的函数:

#include <ctype>Using namespace std;int word_cnt(const char *s){ int cnt = 0; while (*s != '\0') { while (isspace(*s)) ++s; //跳过空白字符 if (*s != '\0') { ++cnt; //找到一个单词 while (!isspace(*s) && *s != '\0') ++s; //跳过单词 } } return cnt;}

一个二级指针可以指向一个字符指针数组,如main()函数的参数就可以包含一个字符指针数组:

int main(int argc, char *argv[])

如在命令行中执行包括有字符指针数组的程序,可以在其中跟随n个定义的字符串:

#include <stdio.h>int main(int argc, char *argv[]){ int i; cout << "argc=“ << argc << endl; for(i=0; i<argc; ++i) cout << "argv[“ << i << “]=“ << argv[i] << endl; return 0;}

假设生成的执行文件myprogram.exe,

在命令行输入:myprogram

输出结果:

argc=1 argv[0]=myprogram

在命令行输入:myprogram try this

输出结果:

argc=3 argv[0]=myprogramargv[1]=try argv[2]=this

以下是一个二级指针,就是指针指向的指针才指向具体的非地址值:

#include <iostream>using namespace std;int main(){  char *city[] = {"aaa", "bbb", "ccc", "ddd", "eee"}; char **p; for (p=city; p<city+5; ++p)  cout << *p << endl; return 0; }

-End-

标签: #c语言指针指向字符串常量怎么表示 #c语言字符数组指针 #指针指向字符串数组 #c语言定义一个字符数组统计这串字符串的字符个数 #指向字符串的指针变量