三九宝宝网宝宝教育教学论文

C语言字符串赋值操作

12月23日 编辑 39baobao.com

[C语言问题编写赋值函数]#include #include int assignment(int *,int); void print(int *,int); void main() { int sz,rt; int *p; //定义一个指针,在子函数里再动态分配内存 printf("输入data的数据...+阅读

首先要弄清楚 什么是 字符串指针,还有什么叫字符数组。

字符串指针只是一个指针,就像你上面 的 A 里面的 s 没有初始化,那么你调用读串 函数 数据要写到哪里呢? 不知道吧 ,因 为s 不知道 指向哪里。

char *s; s="ABCDEF"; 这又是什么意思呢? 这个操作 是将一个 串("ABCDEF" 在内存中已经存在了),只是将这个串的首地址 赋给 s ,也就是让 s 指向 这个串。你可以把这个串理解成 在编译时期就已经确定好了的数据。我们可以用它。但不能更改他的值。

什么叫 字符数组呢? 首先要弄清楚 什么叫 数组 ,如 int array[4]={1,2,3,4}; 这是什么意思呢?

就是 四个连续的整数 吧。 同样 字符数组也 是 连续的 N个字符吧 如 char arr[3]={'A','B','C'};

这是一个数组 ,有三个元素,分别是 A B C ,看起来“好像”字符串呀,为什么是 “好像”,因为它与字符串 有着本质的区别。字符串 是 N 个连续的字符 +'\0' 组成, 我们上面的 例子只有 N个连续的字符,没有 '\0' 吧。所以它不是字符串。 为了使用方便 呢,编译器允许我们 使用如下方式初始化一个字符串。

1:char *s="abcdef";

2:char ss[10]="abcd";

3:char sss[10]={"kkkk"};

上面三种方式 都是正确的,但是 有区别。

1: 上面已经讲了,是将已经存在于内存中的字符串的首地址 赋值给 s

2: 这是将已经存在于内存中的字符串 拷贝到ss 这个数组里面,是一个拷贝 过程,产生的影响是系统中存在两个 相同的字符串。

3:同2

以下为关联文档:

c语言字符串赋值// string[500]="abcdefg"; //是将字符串"abcdef"赋值给字符数组中string[500]这个元素,先不说string[500]已经越界了. 单单是string[500]只能存放一个字符,但你这里却要将一串字...

推荐阅读
图文推荐