C/C++(字符串处理)字符指针、字符数组用法大总结

字符指针变量和字符数组都可以处理字符、字符串,但是两者却有着本质的区别。今天用到就把所有的总结一下,以供大家参考!

1、字符数组初始化及赋值

char c_a[] = {"songjinshi"};//正确

char c_a[] = {'s','o'};//正确

char c_a[] = "songjinshi";//正确

char c_a[11];
c_a = "songjinshi";//错误,c_a是一个指针常量不能直接赋值
c_a++;//错误,c_a是一个指针常量

char c_a[11];
for(i=0;i<11;i++)
   scanf("%c",c_a+i);//正确

char c_a[11];
scanf("%s",c_a);//正确

char c_a[11];
strcpy(c_a,"songjinshi");//正确

2、字符指针初始化及赋值

char* c_p = "songjinshi";//正确

char* c_p = 0;//正确,指针变量值为0,字符串长度为0,即字符指针指向一个空字符串

char*c_p = "songjinshi";
c_p = "song";//正确,改变字符指针指向的字符串,即改变字符指针变量的值(地址)
c_p++;//正确,移动指针
printf("%s",c_p);//输出ongjinshi

char* c_p;
scanf("%s",c_p);//错误,c_p是一个字符指针但是没有指向有效的内存地址(空间)

char* c_p = "song";
*c_p = 'z';//错误,c_p指向的是常量数据区(常量数据表——静态存储区),不能更改里面的内容

char* c_p = "songjisnhi";
strcpy(c_p,"zhangdi");//错误,c_p指向常量数据区,无法更改

时间: 2024-09-30 06:47:31

C/C++(字符串处理)字符指针、字符数组用法大总结的相关文章

C# Split 根据组合字符进行拆分数组用法

C# Split 根据组合字符进行拆分数组用法,如下代码: string sql = "aaaaaaaaaa{@}bbbbbbbbbb{@}ccccccc#cccccc"; //1.单组合{@}拆分 string[] separator = new string[] { "{@}" }; //2.多组合{@}.#拆分 string[] separator1 = new string[] { "{@}", "#" }; stri

字符数组,字符指针,sizeof,strlen总结

先看下面这一段代码,读者可以自己思考一下,是否自己可以完全答对 // test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include<cstdio> #include <string> using namespace std; struct{ short a1; short a2; s

c语言-关于字符指针数组,如何赋值?

问题描述 关于字符指针数组,如何赋值? int main() { char *a[2]={"abc","bcd"} scanf{ }; printf{ }; return 0; } 请问在scanf中输入什么代码赋值,替换"abc"abc 解决方案 指针常量不行.你得这么写 char * p= new char[100]; scanf("%s", p); 解决方案二: 字符指针数组字符数组与字符指针字符型指针数组变量定义与赋值

c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求

问题描述 c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求 #include #include int main() { char*s; scanf("%s",s); //printf("%sn",s); //int n = strlen(s); //printf("%dn",n); char ret[56]; return 0; } 解决方案 s只是指针变量,没有分配内存 char*s; s = mall

C/C++中字符指针数组及指向指针的指针的含义

就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针. 先看下面的代码,注意看代码中的注解: #include <iostream>#include <string>using namespace std; void print_char(char* array[],int len);//函数原形声明void main(void){//-----------------------------段1----------

字符数组与字符指针的问题

问题描述 字符数组与字符指针的问题 include int main(void) { char*str="hello"; return 0; } ///////////////////////////////我的疑惑是:为什么上面可以,下面的不可以? include int main(void) { char*str; scanf("%s",str); return 0; } 解决方案 唔..比如这样一段代码 通过调试得知指针变量s地址为0xbffff344:str

c语言-C语言关于字符指针变量和字符数组的说法

问题描述 C语言关于字符指针变量和字符数组的说法 下列关于字符指针变量和字符数组的说法错误的是 A)字符指针变量的值可以变化 B)字符数组的值可以变化 C)字符指针变量代表了一个地址 D)字符数组代表了一个地址 ====答案选B,求解释? 解决方案 选择B.字符数组相当于指针常量. 解决方案二: 数组定义时系统给开辟内存单元,数组名相当于数组的开始地址是不能变化的 解决方案三: C语言字符指针和字符数组C语言中,为什么字符串可以赋值给字符指针变量字符数组和字符指针

c语言-结构体内指针字符数组的释放

问题描述 结构体内指针字符数组的释放 问题:结构体成员char* name和结构体struct student* studentIOS同时释放的话回报错,错误见代码中注释.请问这里要怎么释放呢?还是结构体里面不能这样使用指针字符数组? #include #include struct student{ int id; //长度:4 char* name; //8 int score[2]; //8 float avgScore; //4 }; void input(struct student*

c++怎么将字符串中的汉字和数字分别存入不同字符指针所指空间?

问题描述 c++怎么将字符串中的汉字和数字分别存入不同字符指针所指空间? 如字符串:测试1次 将 测试 存入char*s 将 1 存入char* p 解决方案 只能想到一个一个字符的遍历,然后分别赋值给2个数组.如果确定输入的是"字符,字符,数字,字符"的格式,可以接收的时候就用格式化接收把他们分开. 解决方案二: #include int isalnum(int c); int isalpha(int c); int isascii(int c); int isblank(int c