精华内容
下载资源
问答
  • 比如定义了一个数组a,然后用scanner输入一个字符a,如何用输入的这个a去调用定义的数组a?
  • 如何将一个字符串数组赋值一个字符串数组?一开始直接用二维数组赋值,报错了,那么怎么用一个字符串数组初始化另一个字符串数组
  • 如何给一个字符串添加数组的方法

    千次阅读 2019-03-22 10:14:43
    比如说给一个数组添加一个去除所有元素的前后空格这样的题目,或者说给一个字符串添加一个倒叙的方法。 在碰见这种问题是我们首先应该想到的是这个方法是否存在于某个其他js内置对象中,如果存在你就可以直接在这个...

    如何给一个字符串添加数组的方法

    我们可以在面试题中经常会看见这样一个的题目,就是给某个js的内置对象中添加一个不是这个内置对象的方法的方法。比如说给一个数组添加一个去除所有元素的前后空格这样的题目,或者说给一个字符串添加一个倒叙的方法。
    在碰见这种问题是我们首先应该想到的是这个方法是否存在于某个其他js内置对象中,如果存在你就可以直接在这个对象的就近原型上添加这么一个方法,比如:

       String.prototype.reverse=function(){
        		let arr = this.split('');		 //将字符串转为数组
        		arr.reverse();    	 //将数组倒叙
        		let str = arr.join('');		//把数组转为字符串
        		return str;		//return出字符串
        	}
    

    这样就直接给字符串添加了一个数组的方法啦。
    这样我们其实可以按照一个步骤来分析它:
    1、找一下这个方法是否是哪个内置对象的方法
    2、如果没有就依照相关方法创造一个这样的方法
    3、将这个方法添加到这个对象的prototype上

    展开全文
  • C语言:字符串数组与字符串指针数组

    万次阅读 多人点赞 2019-04-27 21:46:19
    1,首先,不论是局部,静态还是全局数组都必须在定义的时候...最开始编写时,将str定义为字符串数组,怎么都出不来结果。半天才发现应该用字符串指针数组 3,那么问题来了,字符串数组和字符串指针数组有什么区别 ...

    1,首先,不论是局部,静态还是全局数组都必须在定义的时候初始化,否则就得通过其他方式,eg 循环操作,字符串处理函数strcpy()

    2,附以下代码: 主要完成将”I am from china ”倒置为”china from am I”,

    最开始编写时,将str定义为字符串数组,怎么都出不来结果。半天才发现应该用字符串指针数组

    3,那么问题来了,字符串数组和字符串指针数组有什么区别

    举个例子  char a[] = "hello";   //字符串数组,存放的是字符

                    char *b[] = {"hello", "world"};//字符串指针数组,存放的是指针即元素地址,指针指向其中的元素

    字符数组初始化  char a[10] ="hello";//字符串以'\0'结尾,这种方式系统会自动在数组未填值的地方添加'\0'

                               char b[] = {'h', 'e' , 'l', 'l', '\0'};//类似于初始化整型数组,必须要手动在后面添加'\0'

    所以当我 这样定义时char a[] = {"hello", "world"};,报错str中有多余的元素。

     

    详细说明:
         假定字符串数据中也以NUL结束字符串    

          char  arr1[10][100];

          char *arr2[10];

        内存: arr1是个字符串数组,分配内存 10 * 100 = 1000 个字节。
                  arr2是个字符串指针数组,分配内存 10 * 8 = 80 个字节。

      标识符: arr1是个该数组第一个指向 100 个char型数据内存的指针。
                    形象的理解,arr1是一篇文章(共10行)中的     第一行的首地址。
                    arr2是个该数组第一个指向  1  个char型数据(8字节)内存的指针。
                    形象的理解,arr2是一篇文章(共10行)中的第一行的     首字符地址。

    元素访问: 
            
            a.  arr1[4][0];
                 *arr2[4];
                它们都是用于表示访问各自数组中第4行的首字符。

            b.  arr1[4]
                 arr2[4]
                它们都是用于表达第4行字符串。
                arr1[4]是字符指针常量,arr2[4]是字符指针变量。

            c.  char (*parr1)[100];
                 char **parr2;
                 parr1 = arr1 + 4;
                 parr2 = arr2 + 4;
                定义了两个变量,分别接收了两个数组的第4行的数据。
                parr1是指向第4行拥有100个字符的一维数组。
                parr2定义一个指向第4列的一个指针。

            d.  char *str1, *str2, *str2, *str4;
                 str1 = arr1[4];
                 arr1[4]它就是arr1第4行这个有100个字符的一维数组名,是该数组首元素的指针常量。
                 str2 = *( arr1 + 4 )
                 arr1+4是指向arr1第4行字符的指针,进行间接访问后,得到第4行字符这个一维数组的数组名。
                 str3 = arr2[4];
                 arr2[4]是arr2的第4个元素,该元素是指向一个字符串的首元素指针。
                 str3 = *( arr2 + 4 )
                 arr2+4是指向arr2第4个元素的指针,进行间接访问后,得到第4个元素,该元素是一个指向一个字符串首元素的指针。

    字符串数组与字符串指针的共同点:
           arr1[4]、*( arr1 + 4 ) 字符指针常量。
           arr2[4]、*( arr2 + 4 ) 字符指针变量。
           它们都是字符指针,只不过一个可以修改指针值,一个不能修改指针值。
           指针变量需要初始化,指针常量在定义时已经完成了初始化。
           若字符串数组中的数据也以NUL结尾,那么这两种指针都可以用字符串标准库函数的实参(因为这些函数都不会改变指针值)。

     

    三种方法:

    1.在C语言中,是将字符串作为字符数组来处理的,字符串是逐个存放到数组元素中的,例如用一个一维的字符数组存放字符串"I am a boy.",如下代码:

    char c[12] = {'I','a','m','a','b','o','y','.'};
    这个字符串的实际长度是11,数组长度是12,实际工作中,人们关心的往往是字符串的有效长度而不是字符串的数组长度,例如要打印字符串,这是就要知道字符串的实际长度。平时常使用下面三种方式来测定字符串的实际长度:
    (1)在串值后面加一个不计入长度的结束标记字符,比如'\0'来表示串值的终结

    初始化一个字符串的方法如下,在最后添加'\0'

    char str[] = {'I','a','m','h','a','p','p','y','\0'};
    也可以直接使用字符串常量初始化字符数组(系统自动加上'\0'),这种方法符合人们的习惯。

    char str[] = "I am happy";
    或者
    char str[] = {"I am happy"};
    注意:不能使用下面的赋值方式:
    char str[20];
    str = "I am happy";
    但可以用字符指针指向这个字符串:
    char *str;
    str = "I love China";


    (2)将实际串长度值保存在数组0的下标下

    #define MAXSIZE 20                        //数组的长度
    typdef char String[MAXSIZE+1];
    初始化字符串的方法:

    String t;
    StrAssign(t,"I am happy");                
    int StrAssign(String T,char *chars)  
    {
        T[0] = strlen(chars);                //下标为0存放数组长度
        for(i=1;i<=strlen(chars);i++)        //下标位置从1开始存放数据
        {
            T[i] = *(chars+i-1);
        }
         return 1;
    }
    (3)使用结构体类型(自定义类型)

    #define MAXSIZE 20
    typedef struct{
        char ch[MAXSIZE];
        int len;                
    }String;
    其中:MAXSIZE表示串的最大长度,ch是存储字符串的一维数组,len是字符串的长度
    初始化函数示例:

     String t;
     StrAssign(&t,"I am happy");
    int StrAssign(String *t,char *chars)
    {
        int i;
        if(strlen(chars)>MAXSIZE+1)        //字符串的长度大于数组的长度,操作失败,返回0
            return 0;
        for(i=0;i<strlen(chars);i++)
        {
            t->ch[i] = *(chars+i);        
        }
        t->len = strlen(chars);            //数组的长度
        return 1;                          //返回1,操作成功
    }
    说明:这里的StrAssign函数的参数t使用的是指针,是因为结构体变量做做形参,用法和普通变量一样属于值传递方式,在子函数中要给t赋值,所以输入的是t的指针。与之对比的是(2)子函数中T是数组,传入的是数组的首地址(改变形参也就改变了实参)。

    字符串定义的五种方法

    第1种:

    char a[5]="hello";
    第2种:

    char a[]="hello";
    第3种:

    char* a="hello";
    第4种:

    char a[10];
    gets(a);
    第5种:

    char* a[5]={"hello",
    "nihao",
    "good",
    "ok",
    "bye"};

     

    展开全文
  • 字符串数组与字符串指针数组

    千次阅读 2018-07-27 00:02:54
    1,首先,不论是局部,静态还是全局数组都必须在定义的时候...最开始编写时,将str定义为字符串数组,怎么都出不来结果。半天才发现应该用字符串指针数组 3,那么问题来了,字符串数组和字符串指针数组有什么区别 ...

    1,首先,不论是局部,静态还是全局数组都必须在定义的时候初始化,否则就得通过其他方式,eg 循环操作,字符串处理函数strcpy()

    2,附以下代码: 主要完成将”I am from china ”倒置为”china from am I”,

    最开始编写时,将str定义为字符串数组,怎么都出不来结果。半天才发现应该用字符串指针数组

    3,那么问题来了,字符串数组和字符串指针数组有什么区别

    举个例子  char a[] = "hello";   //字符串数组,存放的是字符

                    char *b[] = {"hello", "world"};//字符串指针数组,存放的是指针即元素地址,指针指向其中的元素

    字符数组初始化  char a[10] ="hello";//字符串以'\0'结尾,这种方式系统会自动在数组未填值的地方添加'\0'

                               char b[] = {'h', 'e' , 'l', 'l', '\0'};//类似于初始化整型数组,必须要手动在后面添加'\0'

    所以当我 这样定义时char a[] = {"hello", "world"};,报错str中有多余的元素。

     

    展开全文
  • 字符指针:字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。 char *ps=&quot;C Language&quot;; 顺序是:1....

    一、字符指针、字符数组

    1. 字符指针:字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。

       char *ps="C Language";      顺序是:1.分配内存给字符指针;2.分配内存给字符串;3.将字符串首地址赋值给字符指针;
      
       可以写为:
      
       char *ps;  #ps字符串指针,是指针,是一个变量,
      
       ps="C Language"; #ps为字符串的首地址,利用ps++可遍历字符串,字符串存储在以ps为开始地址的地段连续的内存空间中,并以'\0'作为字符串的结束。
      

    这里有两点需要考虑清楚的地方:①*a只是指向一个字符。举例如下:

    1.#include <stdio.h>

    2.#include <stdlib.h>

    4.int main(void){

    5.char *a= “bcd” ;

    6.printf(“输出字符:%c /n”, *a); /输出字符,使用"%c"/

    printf(“输出字符:%c /n”, *(a+1) ); /输出字符,使用"%c"/

    7.printf(“输出字符串:%s /n”, a); /输出字符串,使用"%s";而且a之前不能有星号"" */

    8.system(“pause”); /为了能看到输出结果/

    9.}

    10./*运行结果如下:

    11.输出字符:b
    输出字符:c

    12.输出字符串:bcd*/

    ②若字符串常量出现在在表达式中,代表的值为该字符串常量的第一个字符的地址。所以”hello”仅仅代表的是其地址。原声明方式相当于以下声明方式:

    1.char *a;

    2.a=“hello”;/这里字符串"hello"仅仅代表其第一个字符的地址/

    1. 字符数组:字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。(即用字符数组来存放字符串)。

                 在c语言中,将字符串作为字符数组来处理。(c++中不是)
      
                 字符数组初始化的方法:
      
                           1).  可以用字符串常量来初始化字符数组:char  str[]={"Iamhappy"};   可以省略花括号
      
                                                                                 char  str[]="Iamhappy";  #系统自动加入‘\0’
      
                           注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值。
      
                           下面的赋值方法是错误的:
      
                            char str[20];
      
                            str="Iamhappy";  
      
                            对字符数组的各元素逐个赋值。
      
                            char str[10]={'I','','a','m','',‘h’,'a','p','p','y'};
      

    在C语言中,可以用两种方法表示和存放字符串:

    (1)用字符数组存放一个字符串
    char str[]=“IloveChina”;
    (2)用字符指针指向一个字符串
    char *str=“IloveChina”;

    两种表示方式的字符串输出都用:printf(“%s\n”, str);

    %s表示输出一个字符串,给出字符指针变量名str(对于第一种表示方法,字符数组名即是字符数组的首地址,与第二种中的指针意义是一致的),则系统先输出它所指向的一个字符数据,然后自动使str自动加1,使之指向下一个字符…,如此,直到遇到字符串结束标识符"\0"。

    二、字符串指针

    string* str可以赋值string* str = {“hello”, “world”};//对比与char name = “wang” = {‘w’,‘a’,‘n’,‘g’}
    //?? (str) = “hello”, (str+1) = “world”
    //?? ((str)+1) = ‘e’,
    也就是说每个元素都是string类型的,跟char
    是不一样的,不过string
    可以用char**来代替//string = char
    , string* = char**

    三、(字符串)指针数组

    #include <stdio.h>
    void main()
    {
    char *str[] = {“Hello”, “C++”, “World”};//char (*str)[] = …
    int i;
    for(i=0; i<3; i++)
    printf("%s\n", str[i]);
    } #str[0]字符串“hello”的首地址,str[0]+1:字符串“hello”第二个字符‘e’的地址,str[2]=str+2:第三个字符串“world”的首地址

    #str[1]字符串“C++”的首地址

    #str[2]字符串“world”的首地址


    #include <stdio.h>
    #include <string.h>
    void main()
    {
    char *str[] = {“Hello”, “C++”, “World”};
    char **p;
    for(p=str; p<str+3; p++)
    puts(*p); #*p为字符串首地址,*p[0]为字符串的第一个字符地址
    }

    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
    char str[3]={“Hello”,“C++”,“World”};
    printf("%s,%s,%c",str[0],str[0]+1,
    (*(str+2)+1));
    system(“pause”);
    }
    结果为:
    Hello,ello,o

    格式:char* na[N] = {“li”, “zh”, “li”, “zh”, “li”};

    char *a[]:表示a是数组,数组中的元素是指针,指向char类型,(数组里面所有的元素是连续的内存存放的)

    数组名是数组第一个字节的内存地址,并且数组名a也表示指针。所以a 并不表示a地址存储的内容, 而是a地址本身。
    a+1 表示a的第二个元素的内存地址, 所以是加8字节.( 因为a的元素是char 指针, 所需要的空间为8字节(64位内存地址). )
    (a+1) 则表示a这个数组的第二个元素的内容 (是个char 类型的指针. 本例表示为world字符串的地址).
    ((a+1)) 则表示a这个数组的第二个元素的内容(char指针)所指向的内容(w字符).
    char * a[10] 表示限定这个数组最多可存放10个元素(char指针), 也就是说这个数组占用10
    8 = 80字节.
    #w: a+1 => *(a+1) => *(a+1)[0]
    指针(地址) 指针内容(字符串) 字符

    四、
    char *argv:理解为字符串
    char **argv:理解为字符串指针
    char argv[]:字符串指针数组
    int main(int argc, char
    argv[])

    这是一个典型的数组名(或者说是指针数组)做函数参数的例子,而且还是没有指定大小的形参数组。

    有时为了再被调用函数中处理数组元素的需要,可以另设一个形参,传递需要处理的数组元素的个数。而且用数组名做函数实参时,不是吧数组元素的值传递给形参,而是把实参数组的首元素的地址传递给形参数组,这样两个数组久共同占有同一内存单元。  和变量作函数参数的作用不一样。 
    

    可以去看看关于数组作为函数参数和指针数组作main函数形参方面的例子。谭浩强的那本书讲的很细,对这个有详细的解释。

    1. 当char []作为函数的参数时, 表示 char *. 当作为函数的参数传入时, 实际上是拷贝了数组的第一个元素的地址 .
      所以 void test (char a[]) 等同于 void test ( char * a )
      char x[10] ; 然后调用 test(x) 则等同于把 x 的第一个元素的地址赋予给参数 a .

    2. char * a 和 char a[]
      相同点 : a都是指针, 指向char类型.
      不同点 : char a[] 把内容存在stack .
      char *a 则把指针存在stack,把内容存在constants.

    3. char * a[10] 和 char a[10][20]
      相同点 : a 都是2级指针, *a 表示一级指针, **a 表示内存中存储的内容.
      不同点 : char * a[10], 数组由char * 类型的指针组成;
      char a [10][20] 表示一位放10个元素, 二维放20个元素, 值存放地是一块连续的内存区域, 没有指针.

    4. 小窍门 : []和*的数量对应, 如 char a[][]的指针层数是2, 相当于char **a; char a[]也是如此, 两层指针. 迷糊的时候数数到底有几个几个[], 就知道什么情况下存储的是内容还是地址了? 如char a[][] 的情况里面: &a, a, *a 都是地址, **a 是内容.

    展开全文
  • C++输入未知长度字符串存入数组

    千次阅读 2020-06-04 15:37:45
    记录C++学习过程的问题,方便以后自己查看 int main() { string str; char temp; while((temp=cin.get())!...i++) //将字符串保回存到字符数组中答 { dest[i]=str[i]; cout<<dest[i]; } delete
  • C++字符串数组 | 字符串数组输出

    千次阅读 2020-12-12 22:12:52
    C++字符串数组定义 在C++中不仅可以用string...在一个字符串数组中包含若干个元素,每个元素相当于一个字符串变量。 并不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长度也是可以变化的,当向某一
  • 1-数组转为字符串 $array=["php","Java","web"]; $result=implode(",",$array); 2-字符串转为数组 $str="php,java,web"; $rsult=explode(',',$str); 更多...
  • 在进行编程练习时,经常会遇到输入一串数字的情况,不像C语言和Java那样,可以直接对应输入,Python对应输入的都是字符串,这时就需要进行转换,这时就可以使用Python的map函数来实现这功能了。 # -*- coding:...
  • # 字符串情况 s = 'hello, world!' s.find('l') s.index('l') # 数组情况 lst = [1,2,'ad','c'] lst.index(1) #0 lst.index('c') #3 区别: 1、find()和index()两者区别在于,遇到没有的元素时: find会返回
  • 字符串和字符串数组

    万次阅读 多人点赞 2019-03-04 13:42:04
    文章目录字符串字符串输出字符串常用方法计算字符串的长度字符串拼接字符串拷贝字符串比较字符串数组 字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,没有\0就不是...
  • #include int main() {  char a[100] = "\0",b[100] = "\0";  int i = 0; ... printf("输入一字符:\n");  scanf("%s",a);  for(i = 0;a[i] != '\0';i++){  b[i] = a[i];  }  
  • 判断一个字符串是否在一个字符串数组里package test;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class isBelongList { private static boolean isBelongList(String str)...
  • scala 字符串转换数组 Scala | 将数组转换为字符串 (Scala | Converting array to string) Arrays play an important role in programming as they provide easy operation and there is a large amount of method ...
  • java从键盘输入一个字符串存入字符数组中, 求出该字符串的长度并输出(不能调用strlen函数)
  • 创建一个长度是100的字符串数组,使用长度是2的随机字符填充该字符串数组,统计这个字符串数组里重复的字符串有多少种 本文是在java学习过程中所做的一些练习,自己也是小菜鸟一枚,写出来的代码可能繁杂且不规范...
  • String Str="abnckdjgdag"; char a[]=new char[Str....-------------------方法1 用于取出字符串的指定索引的字符charAt()--------------- for(int i=0;i<Str.length();i++){ a[i]=Str.charAt(i);//charA...
  • 字符串/数组截取汇总

    千次阅读 2018-08-31 09:01:08
    字符串/数组截取汇总 每次都忘记具体的截取方式,还是总结一下加深记忆比较好~ ...返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。不改变原数组 eg: 输入 var...
  • Python编程语言学习:仅需一行代码将字符串化的数字数组、int数组、float数组实现之间互换(将一个字符串数组转换成整型数组) 目录 仅需一行代码将字符串化的数字数组、int数组、float数组实现之间互换(将一个...
  • #include #include #include void inOrder(char array[], int n ); int main(int argc, char *argv[]) {    char ...printf("请输入字符串:\n");   gets(temp);  char a[strlen(temp)+1];   st
  • 如何将字符串放进数组

    千次阅读 2020-09-16 09:52:00
    如何将字符串放进数组中: 数组.push(字符串):将字符串添加到数组的尾部 例: var arr = [] arr.push(‘a’) console.log(arr)//第次输出arr arr.push(‘b’,‘c’) console.log(arr)//第二次输出arr 输出:
  • 字符串字符数组的赋值

    千次阅读 多人点赞 2017-07-25 14:02:49
    字符数组的定义与初始化 Char str[10] = {‘a’,‘b’,‘c’,‘d’,‘e’}; ...1)、C语言中将字符串当做字符数组来处理,字符串的结束标志是‘\0’,而前面的所有字符组成字符串,不算’\0’
  • 1.利用 Scanner 实现从键盘读入integer或float 型数据 ...获取一行,然后去掉空格,成了一个字符串,再把字符串分成若干个数。依次存入数组中。 其实这个用 BufferedReader 用可以实现,这里就不写出了。
  • js 字符串格式数组转为数组对象

    千次阅读 2019-11-05 21:05:30
    工作中经常会遇到将json字符串转换为json对象,但是将字符串格式数组转为数组对象的场景却不多 如: 其中label_exp: "["cap_pop","wkb_geometry"]" 就是需要操作的数组对象 假如我们直接使用obj.label_exp.find...
  • 如何定义一个字符串数组

    万次阅读 2018-11-25 20:38:58
    #include&lt;iostream&gt; using namespace std; int main() { char *temp[100]={"你好","我好","大家好","good","better","...l
  • C语言如何输入二维字符串数组

    千次阅读 2020-10-12 15:58:29
    二维字符串数组是由多字符串组成的数组,可以采取循环输入一维字符串的做法为这样的二维数组赋值。 #include <stdio.h> int main() { int i,j,a[10][10]; for(i=1;i<=3;i++) scanf("%s",a[i]); ...
  • 数组字符串 String数组字符串 Char数组字符串 int转Stringint i; 1.) String s = String.valueOf(i); 注:valueOf(Type parameter):返回类型参数的字符串表示形式。 2.) String s = Integer
  • 字符串指针数组详解

    万次阅读 多人点赞 2018-08-20 16:07:46
    #include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt; int main(void) { char *str[] = {&...//*单独拿出来,指的是数组里的内容是*型的,str的类型是char *[]型 printf(&amp;amp;quot;%c\n&a

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,561,369
精华内容 624,547
关键字:

怎么输入一个字符串给数组