首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c中给字符数组字符指针赋值的方法总结

写程序的时候,总是搞混,现在总结一下以免以后再犯 char a[10]; 怎么给这个数组赋值呢?谭浩强的书上明确指出,字符数组可以定义时整体赋值,不能再赋值语句中整体赋值。...2、char a[10]; a=”hello”; 这种情况容易出现,a虽然是指针,但是它已经指向堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱...C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作。 直接尝试对字符串进行复制或比较操作会失败。...; C语言把这些语句解释为一个指针与另一个指针之间的(非法的)赋值运算。...但是,使用=初始化字符数组是合法的: char str1[10] = “abc”; 这是因为声明中,=不是赋值运算符。

5.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

C语言】指针进阶:字符指针&&数组指针&&函数指针

-- 文章目录 @[toc] 前言 字符指针 指针数组 数组指针 &数组名 与 数组数组指针的使用 数组传参、指针参数 一维数组传参 二维数组传参 一级指针传参 二级指针传参 函数指针 结语 前言...有了前面的一些指针的基础之后呢,我们将从这篇博客开始,开始一起探究指针的高级主题:指针的进阶,将通过不止一篇的博客讲完这部分的内容,下面一起来看一看> ---- 字符指针 指针的类型中我们知道有一种指针类型为字符指针...其实很简单,这里str3和str4指向的是一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域,当指针指向同一个字符串的时候,他们实际会指向同一块内存。...];//二级字符指针数组指针数组,反过来想:那有没有数组指针。...arr的地址赋值数组指针变量p //但是我们一般很少这样写代码 return 0; } 下面。

2.8K20

C 语言】指针间接赋值 ( 直接赋值 和 间接赋值 | 子函数中间接赋值 )

文章目录 一、直接赋值 和 间接赋值 二、子函数中间接赋值 一、直接赋值 和 间接赋值 ---- 函数体 内部 , 声明普通变量 , 直接赋值 : 直接修改该变量 , 称为 直接赋值 ; 简介赋值...: 将该变量的地址 赋值指针 , 通过 指针 修改内存中的变量数据 , 称为 间接赋值 ; 代码示例 : #include #include int main...指针变量 p p = &a; // 通过指针 简介修改 变量 a 的值 // * 符号可以看做 内存空间 的钥匙 , 可通过地址找到内存 *p = 20; //...第三次打印 a 变量值 printf("a = %d\n", a); return 0; } 执行结果 : 二、子函数中间接赋值 ---- 函数体 内部 , 声明普通变量 ,...> #include /* * 本函数中, 将传入的 p 指针指向的地址 * 对应的 数据 修改为 30 */ void modify_a(int *p) { *

3K10

C 语言】指针数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

: 数组名 类似于 常量指针, 数组名称 不能作为左值, 不能被赋值 ; 数组名 只能作为右值, 被赋值给别的指针 , 数组***大多数情况下可以当做常量指针理解***, 但是 数组名绝对不是真正的常量指针..., 其不能当做左值 //数组除了地址信息之外, 还附带大小信息, 如果只是地址赋值, 大小信息无法带过去, 因此数组不能这样拷贝赋值 //C语言 不支持 这样的赋值 //array_1 = array..._2.c 命令进行编译 , 执行 编译的可执行文件 ....将 src 指针指向的 字符 赋值给 dst 指针指向的值, 然后两个指针自增 1 // 如果赋值指针不等于 '\0' , 那么继续赋值, 如果赋值的值为 '\0' 就退出循环 while( (...到 dest 字符串中 ; ( 2 ) 始终 ‘\0’ 结尾 : 函数始终 dest 字符串之后添加 ‘\0’; ( 3 ) 不填充剩余空间 : 对于拼接剩余的数组空间, 不使用 ‘\0’ 填充

3.6K30

C++字符数组存放字符串 | 字符指针变量

C++指向数组指针作函数参数  一维数组名可以作为函数参数传递,多维数组名也 可作函数参数传递。 ...C++用字符数组存放一个字符C++中可以用多种方法访问一个字符串,第一种字符数组: #include//预处理 using namespace std;//命名空间  int ...main()//主函数  {   char str[]="关注:C语言入门到精通";   cout<<str<<endl;    return 0; //函数返回值为0; } 编译运行结果: 关注:C...第三种,字符指针变量,编译运行结果: #include//预处理 #include using namespace std;//命名空间  int main()//主函数...对字符串中字符的存取,可以用下标方法,也可以用指针方法。 C++字符数组存放字符串 | 字符指针变量 更多案例可以go公众号:C语言入门到精通

1.2K2218

c语言之字符指针变量和字符数组的异同

1.字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址),而不是将字符串放到字符指针变量中。 2.赋值方式。...对字符数组只能对各个元素进行赋值,不能用以下办法对字符数组进行赋值。...char str[20]; str = "ni hao a"; 而对于字符指针变量,可以采用以下方式赋值: char *a; a = "ni hao a"; 但需要注意的是赋值给a的不是字符...3.如果定义了一个字符数组,在编译时为它分配内存单元,它有确切的地址。...而定义一个字符指针变量时,给指针变量分配内存单元,在其中也可以放一个字符变量的地址,也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋予一个地址值,则它并未指向一个确定的字符数据。

1.5K10

C 语言】二级指针作为输入 ( 指针数组 | 指针数组排序 | 字符串排序 | strcmp 函数 )

文章目录 一、strcmp 函数 二、指针数组排序 ( 字符串排序 ) 二、完整代码示例 一、strcmp 函数 ---- strcmp 是 String Compare 缩写 , 该函数用于比较两个字符串...( 字符串排序 ) ---- 指针数组 中的每个元素都是 指向 字符串的指针 , 通过 strcmp 函数对字符串进行排序 , 代码如下 : // 对 指针数组 进行排序 , 排序依据是 指针...完整代码示例 ---- 代码示例 : #include #include #include void main() { // 循环控制变量...发现是 char , 说明指针指向的数据是 char 类型 * * array 是一个数组 , 数组中的元素的 char * 字符串 * * 这是 指针数组 ,...array[i] = array[j]; array[j] = tmp; } } } // 打印排序数组

66010

搞清C++中指针数组字符串的关系

字符串是存储在内存中连续字节的一系列字符C++处理字符串的方式有两种: 1、来自C语言的C-风格字符串; 2、基于string类库中的方法。 本文主要讲第一种。...但怎么表示这个字符串呢,有两种C-风格字符串的表示方式: 1、使用带双引号的字符串表示,比如"aaa"; 2、使用指向字符串第一个字符指针表示,比如arr(arr是数组名,也是指向数组第一个元素的指针...但是一些时候,字符串、指针数组的关系我们常常搞混,下面通过一些典型问题来展示它们间的关系: 1、字符串-数组: #include int main() { using...,赋值给pt,*pt就是取首元素的值) abc(同输出arr) 98(*pt为a,+1后转为整型,即97+1=98) b(*(pt + 1) 相当于 arr[1]) b(数组第二个元素值) abc(&...所以,可以把字符赋值给指向字符指针p,而不能把字符赋值给一个字符数组名(因为字符数组名虽然也是一个指针,但它是一个(指针)常量,是不可变的,放在等号左边会报错)。

1.6K22

c语言字符数组初始化的三种方式_c语言赋值字符

C语言中字符数组的初始化与赋值字符串相关函数! 1.字符数组初始化 C语言中,字符串是当做字符数组来处理的;所以字符串有两种声明方式,一种是字符数组,一种是字符指针。...(2)用字符串常量来初始化字符数组c语言中,将字符串作为字符数组来处理。因此可以使用字符串来初始化字符数组。...(3)字符指针C语言中我们也可以使用字符指针来存储字符串。...字符指针初始化: char* str="zifuchuanshuzu"; C语言对字符串常量是按照字符数组来处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序定义字符指针变量str时,只是把字符串首地址赋值给...字符指针赋值: char *str; str="zifuzhizhen"; 对于字符指针这种赋值方式是正确的。与字符数组不同。

2.2K20

C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )

文章目录 一、字符串 一级指针 内存模型 1、指定大小字符数组 2、未指定大小字符数组 3、指向常量字符串的指针 4、指向堆内存的指针 一、字符串 一级指针 内存模型 ---- #include <stdio.h...指定大小 char array[5] = "abc"; // 栈内存数组 不指定大小 char array2[] = "123"; // 定义指针 , 使用字符赋值..., 声明 数组 , 数组大小 5 字节 , 为其赋值时 , 使用了 “abc” 字符串常量 ; 全局区 的 常量区 存放 “abc” 字符串常量 ; 使用 “abc” 常量为 数组 赋值 , 注意数组的最后一位是...字节 ; // 栈内存数组 不指定大小 char array2[] = "123"; 3、指向常量字符串的指针 栈内存 中 , 定义 局部变量 指针 p , 没有为该指针分配内存..., 该指针指向 字符串常量 “def” ; 全局区 的 常量区 中 , 定义 字符串常量 “def” ; // 定义指针 , 使用字符赋值 char *p = "def"; 4

2.3K20

去除字符串乱码和 不用循环数组赋值 自有的时间调度器

()+strArr[i].slice(1) } strArr = strArr.join("")//数组字符串 console.log(strArr) 二、不使用类似for,while循环控制语句和js...本身自带方法(如:forEach)的情况下,实现将一个空数组[]赋值成[0,2,4,6,8,*****************]范围0-100便可。...用一个统一的方法进行封装可以实现下列的例子: 1.可以为5秒调用a,3秒调用b,7秒调用c。...d...z方法不执行(不执行的方法可以设计成不传递参数),那么第14秒的时候开始重新从0秒循环,又变成5秒调用a,3秒调用b,7秒调用c,这样循环往复; 2.每间隔6秒调用一次a,每间隔4秒调用一次...b,c...z方法不执行; 第一秒先执行a,3秒执行b,但是c却是每间隔3秒执行一次,d是每间隔4秒执行一次,a和b是每4秒进行一次循环; 3.a不执行,b和c每间隔3秒执行一次,d不执行; class

1.5K70

《挑战30天C++入门极限》CC++中字符指针数组及指向指针指针的含义

C/C++中字符指针数组及指向指针指针的含义   就指向指针指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针指针。   ...char* *b=a;//定义一个指向指针指针,并赋予指针数组首地址所指向的第一个字符串的地址也就是abc\0字符串的首地址 cout<<*b<<"|"<<*(b+1)<<...的错误,b=a的赋值,实际上是把a的首地址赋给了b,由于b是一个指向指针指针,程序的输出cout<<*b<<"|"<<*(b+1)<<"|"<<*(b+2)<<endl;   结果是 abc...答案是这样的,c++中,输出字符指针就是输出字符串,程序会自动遇到\0停止.   ...cout<<array[i]<<endl,这里循环中的每次加1操作和段1代码总的道理是一样的,注意看下面的图!

1.3K20

C 语言】多级指针 ( 函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )

文章目录 前言 一、函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) 二、完整代码示例 前言 如果要 通过 函数形参 间接赋值 修改 n 级指针, 需要向函数中传入 n + 1...级指针 形参 ; 一、函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) ---- 通过 函数 形参变量 , 间接赋值 返回 生成的 二级指针 函数 ; 如果要生成一个 二级指针 ,...// 打印字 二维指针 指向的 num 个 一维数组 指向的 字符串 for(i = 0; i < num; i++) { printf("%s\n", array[i].../ 打印字 二维指针 指向的 num 个 一维数组 指向的 字符串 printf_array(p, num); // 对 二维指针 指向的数据进行排序 sort_array(p..., num); // 打印字 二维指针 指向的 num 个 一维数组 指向的 字符串 printf("\nSort : \n"); printf_array(p, num);

97310

C 语言】字符串操作 ( 使用 数组下标 操作字符串 | 使用 char * 指针 操作字符串 )

文章目录 一、使用 数组下标 或 指针 操作字符串 1、使用 数组下标 操作字符串 2、使用 char * 指针 操作字符串 二、代码示例 一、使用 数组下标 或 指针 操作字符串 ---- 1、使用.../ 使用 数组下标 操作字符串 int i = 0; for(i = 0; i < 5; i ++) { printf("%c\n", str[i]);...} 2、使用 char * 指针 操作字符串 使用 指针 访问 字符串 : 将 指针 指向数组 首地址 , 然后可以借助 指针 运算 p + i , 计算从 p 地址开始的第 i 个元素的地址 ; char...> /* * 函数入口 */ int main(int argc, char **args) { // 通过 数组下标 或 指针 操作字符串 // 定义字符数组 , 并为其赋值...5; i ++) { printf("%c\n", str[i]); } // 使用 指针 操作字符串 p = str; for(i = 0;

78310

C++ 中标记字符串与getline() 函数和字符数组

---- theme: channing-cyan highlight: a11y-dark ---- 「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」 C++ 中标记字符串...它需要在循环中调用以获取所有令牌。 当没有更多标记时,它返回 NULL。...分隔 为 空格 和逗号 getline() 函数和字符数组 C++中,流类支持面​​向行的函数,getline()和write()分别执行输入和输出功能。...将字符存储缓冲区中。 提取的最大字符数为 size – 1。 注意终止符(或分隔符)可以是任何字符(如' '、'、' 或任何特殊字符等)。终止符被读取但不保存到缓冲区中,而是由空字符替换。...// 用字符数组显示 getline() 的 C++ 程序 #include using namespace std; int main() { char str[20]

1.3K20

C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 函数中 间接修改 指针变量 的值 | 函数中 间接修改 外部变量 的原理 )

文章目录 一、直接修改 和 间接修改 指针变量 的值 二、函数中 间接修改 指针变量 的值 三、函数中 间接修改 外部变量 的原理 一、直接修改 和 间接修改 指针变量 的值 ---- 直接修改 指针变量...的值 , 就是为其赋值一个地址值 , 使用 & 取地址符 , 将变量地址赋值指针变量 , 或者使用 malloc 函数分配内存赋值指针变量 ; // 将变量地址赋值给一级指针 p...= &a; 间接修改 指针变量 的值 , 首先要 将 指针变量 的 地址值 , 赋值给 1 个 二级指针 变量 , 通过 * 符号 , 间接修改 一级指针变量的值 ; // 将一级指针的地址赋值给二级指针...return 0; } 执行结果 : 二、函数中 间接修改 指针变量 的值 ---- 函数 中 间接修改 指针变量 的值 , 将 指向一级指针 的 二级指针 变量 , 传递到 函数形参 中 ,... 函数中 , 使用 * 符号 , 修改 二级指针 指向的 一级指针 的变量值 ; 注意 : 如果要 修改 一级指针 的值 , 必须 传入 指向 一级指针 的 二级指针 变量 才可以 , 传入一级指针变量

20.7K10

C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理「建议收藏」

C语言中,数组初始化的方式主要有三种: 1、声明时,使用 {0} 初始化; 2、使用memset; 3、用for循环赋值。 那么,这三种方法的原理以及效率如何呢?...原理: 1、for循环,就是循环赋值,不解释了 2、memset,很容易找到memset内部实现代码,这里也不解释了 3、{0} 内部是怎么实现的呢?...字符数组可以方便地采用字符串直接初始化(参考第五章 2.2小节) 译注: 就是 这样啦 char alpha []=”abcdefghijklmn”; */ 下面来看一个例子...一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是 C++ 程序。 Linux 中,C 源文件的后缀名为 .c,而 C++ 源文件的后缀名为 .C 或 .cpp。...,那么局部数组的值就取决于编译器而对程序员来说就是不可预料的了.有时间可以测试一下各个编译器,不过vc中是0xcc.所以对局部数组的初始化要特别小心.但是全局的数组和静态数组还是会被正确的赋于0值的.

2.4K10
领券