C语言中的字符串数组 指针

1、字符串

用“”引起来的内容,就是字符串。

在C语言中有没有专门的字符串的变量?  没有

所以我们使用字符数组来存储字符串。(把字符串的每一个字符存储到字符数组的每一个元素中,并且会多存放一个‘\0’)

‘\0‘ 字符串的结束标记,ascII码表中值是 0 对应的字符。NUT,NULL

2、字符数组

1)定义

char 数祖名[长度];

char str[200]; 表示定义一个长度为200的字符数组,如果用来存储字符串,则字符串的最大长度是199,留出一个给‘\0‘

char str[3]={‘a‘,‘b‘,‘c‘};  //不能以%s进行输出

2)初始化

(1)完全初始化

char str[3]={‘a‘,‘b‘,‘c‘};

(2)部分初始化

char str[3]={‘a‘,‘b‘};

(3)用字符串进行初始化

char str[10]="itcast";  //占用了7个字节因为‘\0‘占用了一个

char str[10]={"itcast"};

3)字符数组的引用

如果把字符数组的内容逐个取出,str[0]、str[1]....str[n-1];

%s 字符串的格式控制符把字符数组整体进行输出

%s 给一个字符数组的首地址,系统会自动从首地址开始连续读取直到遇到‘\0‘结束

4)存储细节

字符数组存储的细节:

连续的一片存储区域(地址是连续的),每个字符占用1个字节

计算字符数组(字符串)的长度

针对这种定义方法,求长度(会包含‘\0‘):char str[]="abc";    //4

sizeof(str)/sizeof(char) =  sizeof(str);

strlen也可以计算字符串的长度(不包含‘\0‘):

strlen(str);                               //3

3、字符数字和普通数组的区别

char str[];   //只能存字符型数据

int  arr[];   //只能存整型   数据

4、常见的字符串函数6个

gets(数组名)   表示获取从键盘数输入的字符串(可以接收空格)

puts(数组名)   表示讲数组的内容输出到控制台(可以自动换行)

strcat(数组名1,字符串) 表示把字符串链接到数组1中(回覆盖数组1的\0)

strcpy(数组名1,字符串) 表示把字符串拷贝到数组1中,会覆盖数组1中原有的内容

strcmp(字符串1,字符串2) 比较两个字符串的大小

字符串1>字符串2    >0

字符串1<字符串2    <0

字符串1==字符串2   ==0

strlen(数组名) 计算字符串的长度(不包括\0)

5、什么是地址?什么是指针?

内存被操作系统划分了若干个存储单元,每个单元是1个字节(8位)

每个字节都有字节的地址,这个地址就叫指针。

地址和内存单元是两个不同的概念

地址是内存单元的编号

内存单元是地址对应的实际存储内容。

6、指针变量

用来存放地址的变量,就称为指针变量

1)定义

数据类型  *指针变量名 ;      //指针变量是个变量,指针是常量

"*" 在两个场合起作用:

定义指针的时候使用   int *a;  // *表示定义一个指针变量

在指针对应的存储单元内容的时候用     *a   //表示获取指针变量中存放的地址所对应的存储内容

2)初始化

指针定义完成以后,要初始化,如果不初始化,则这个指针成为野指针

可以用NULL 也可以用 0 进行初始化,表示这是一个空指针,什么也不指。

正常情况下的初始化

int a;

int  *p1 = &a;

3)访问方法

*指针变量  //表示获取指针变量中存放的地址所对应的存储单元的内容

7、指针的使用场景

1)间接修改变量的值

8、多级指针

指针的指针

9、指针为什么要区分类型

1)数据有不同类型,要指向不类型的数据也需要不同的指针

2)指针是一个地址,*指针变量  不知道取多少个字节的内容

时间: 2024-08-01 22:39:47

C语言中的字符串数组 指针的相关文章

C语言学习---day1(字符串数组,指针)

C语言中没有和JAVA中一样的String类型,因此,在C语言中,通过使用字符数组来保存字符串,为了和普通的字符数组区分,我们需要在字符串的尾部添加 一个结束标志:'\0',因此,例如字符串:"bht",那么保存这个字符串的字符数组长度为4. 字符串的初始化: 1 char a[4]={'b','b','t','\0'}; 2 3 char b[4]; 4 b[0]='b'; 5 b[1]='h'....... 6 7 char c[]="bht"; 如果使用第7行

关于“C语言中的字符数组和字符串”一些需要注意的基础点

在C语言中,没有类似Java的String类对字符串的处理,字符串的包装可以采用字符数组. 先看字符数组: #include<stdio.h> void main() { char array[] = {'a','b','c'}; int str = sizeof(array)/sizeof(char); printf("%d",str); } 此时的输出结果为:3,即字符数组的长度为3. 下面我们用字符串初始化字符数组,代码如下. #include<stdio.h&

第30课 C语言中的字符串

1. 字符串的概念 (1)字符串是有序字符的集合 (2)字符串是程序中的基本元素之一 (3)C语言中没有字符串的概念,而是通过特殊的字符数组模拟字符串,是以'\0'结尾的字符数组. 2. 字符数组与字符串 (1)在C语言中,字双引号引用的单个或多个字符是一种特殊的字面量,被存储于程序的全局只读存储区,在本质上为字符数组,编译器自动在结尾加上'\0'字符. [实例分析]字符数组与字符串 #include <stdio.h> int main(){ char ca[] = {'H','e','l'

C语言中的字符串

1.从概念上讲,C语言中没有字符串数据类型 2.在C语言中使用字符数组来模拟字符串 3.C语言中的字符串是以'\0'结束的字符数组 4.C语言中的字符串可以分配于栈空间,堆空间或者只读存储区 5.字符串的长度就是字符串所包含字符的个数 6.C语言中的字符串长度指的是第一个'\0'字符前出现的字符个数 7.C语言中通过'\0'结束符来确定字符串的长度 注意: strlen返回数为无符号数,两个无符号数相减依然为无符号数. 1.一般情况下,千万不要自行编写C标注库已经提供的函数 2.标准库有时会使用

C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

目录 00 简介 01 算法概述 02 公用方法 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存的忙闲状态,为进程分配和释放内存.当主存的空间太小而无法装入所有的进程时,就需要在内存和硬盘之间进行调度操作. 多数操作系统只采用某种特定的页面置换算法进行置换,无法预先探测当前运行进程的页面访问模式,因此不能根据不同的页面访问模式,选用不同的页面置换算法.当然,如果能对不同的访问模式选取相应的页面置换算法,

Java语言中的---字符串

day09 Java语言中的---字符串 一.字符串概述: 字符串在程序中是一个非常重要的知识点,在处理一系列程序的时候都会定义一些字符串来使用.下面我们就来看看如何定义和使用一个字符串. 二.字符串(String): 1.字符串的分类:字符串根据能否可以改变被分为常用的三种, (1)"String"类:这个类是Java本身自带的一个类,无需定义.可以直接使用,但是当你在操作这个类的时候你就可以直接创建实例.同时这也是一个不可变的类,也就是说你对某个字符串新增或者删除时,原来的这个字符

C语言中以字符串形式输出枚举变量

C语言中以字符串形式输出枚举变量 摘自:https://blog.csdn.net/haifeilang/article/details/41079255 2014年11月13日 15:17:20 haifeilang 阅读数:6295 每个枚举常量对应一个整形数字,很多时候可以像整形一样使用,这个大家都知道:但是如果要求打印枚举变量名的字符串,办法也有很多,查看网上方法几乎都需要转换,要么用数组,下面要说的是一种可以算是直接打印的新方法: #会将后面的内容作为字符串返回 如果想让#后面的内容作

Android中资源文件中的字符串数组string-array简单用法

在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的strings.xml文件里,或是其他自定义的xml中都可以,以下操作方法相同. <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sports"> <item>足球<

C语言中函数返回数组

#include "stdio.h"/*int* set(int a,int *c){ int *b; b=malloc(sizeof(int)*3); c[0]=a; c[1]=1+a; c[2]=2+a; b[0]=13; b[1]=14; b[2]=15; return b;}*/char *set(void){ char *buf; buf=malloc(sizeof(char)*3);//创建内存区 buf[0]=0x30; buf[1]=0x31; buf[2]=0x32;