C语言中的数组与字符串
1. 数组与指针:
对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来; 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下标为0的元素的指针;
实际上,对于数组下标的运算,实际上都是通过指针进行的;
如: int a[10] ,数组名 a 实际上为指向数组第0个元素的指针; 所以, a[i] 可以表示为 *(a+i), 即对指针求值;
int b[10][31] 表示了b 是一个援用10个元素的数组, 而每一个元素又是拥有31个整型元素的数组; 所以,b 表示b[0] 的地址,而 b[0]表示了 b[0][0]的地址; b+i 表示了 b[i]的地址(即指向b 的第i个元素的指针),
对于 b[i][j],它等阶于 *(*(b+i)+j)
2. 字符数组和字符串:
字符数组是用用于存放字符串的:
// 字符数组的定义:它与数组定义一样,只是类型改为了char;
char a[10] //在定义的时候初始化:
char a[10] = {'a', 'b', 'c'}
或 char a[10] = "abc" 此时,C编译系统会在字符串结尾自动加上'\0';用指针来定义一个字符串:
char* a = "abc" 系统也会自己在字符串后面加上’\0';注意,特别重要:
用指针定义字符串时, 初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串或其中一个单个字符的话,则会报错的;
有字符数组定义的字符串时,由字符串常量初始化的数组是可以修改的.
使用malloc()或calloc()申请的内存是可以修改的;
几个简单的字符处理函数:
下面的几个字符串的处理函数包含在头文件 string.h 中;
字符串的输入函数:gets()
字符串的输出函数:puts( )
字符串的连接函数: strcat( )
字符串复制函数: strcpy( )
字符串比较函数:strcmp ( )
测试字符串的长的函数: strlen( )
C语言中的数组与字符串的更多相关文章
- C语言中字符数组和字符串指针分析
这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...
- C语言中整形数组、字符数组、字符串的区别
一. 第一 整型数组的存放,数组最后是不加'\0'的,字符串会自动加上,因此存放字符的时候数组的大小要比实际字符的多一个 第二 整型数组 每一个单元是4个字节的,字符串是一个一个字符存放的,每个字符占 ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- C语言中存储多个字符串的两种方式
C语言中存储多个字符串的两种方式 方式一 二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...
- go语言中的数组切片:特立独行的可变数组
go语言中的数组切片:特立独行的可变数组 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多.但是在使用了一段 ...
- Go 语言中的数组是一种 值类型(不像 C/C++ 中是指向首元素的指针)
the-way-to-go_ZH_CN/07.1.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-w ...
- Go语言中底层数组和切片的关系以及数组扩容规则
Go语言中底层数组和切片的关系以及数组扩容规则 demo package main import ( "fmt" ) func main() { // 声明一个底层数组,长度为10 ...
- C语言中的数组和指针以及字符串
数组名同时也是该数组首元素的地址,而指针提供了一种用来使用地址的符号方法,因此指针能够很有效地处理数组. 将一个整数加给指针,这个整数会和指针所指类型的字节数相乘,然后所得的结果会加到初始地址上 da ...
- C语言基础:数组和字符串
数组:数组的定义注意点 数组初始化正确写法: int args[5] = {1,23,32,4,5}; int args[5] = {12,23}; int args[5] = {[3]=23, [4 ...
随机推荐
- password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...
- nginx 前端调度 对后端的app的生存状态的检测
# cat hosts.conf #app调试 upstream gl-appsrv_pools { server 10.1x0.2xx.1x0:8040; server 10.x9x.20.208: ...
- Java数据库连接池实现原理
一般来说,Java应用程序访问数据库的过程是: 装载数据库驱动程序: 通过jdbc建立数据库连接: 访问数据库,执行sql语句: 断开数据库连接. public class DBConnection ...
- django_simple_captcha使用笔记
一.先来官方文档的步骤: Install django-simple-captcha via pip: pip install django-simple-captcha Add captcha t ...
- c#,asp.net 开发 app 学习资料整理
VS2015 Apache Cordova第一个Android和IOS应用 http://www.cnblogs.com/aehyok/p/4116410.html PhoneGap:免费开源的 HT ...
- (原创)C++11改进我们的程序之move和完美转发
本次要讲的是右值引用相关的几个函数:std::move, std::forward和成员的emplace_back,通过这些函数我们可以避免不必要的拷贝,提高程序性能.move是将对象的状态或者所有权 ...
- iOS开发之蓝牙
// // ViewController.m // 13-蓝牙 // // Created by hongqiangli on 2017/7/21. // Copyright © 李洪强. A ...
- 使用nginx搭建tomcat集群配置
软件准备: (1)jdk-8u73-linux-x64.tar.gz (2)apache-tomcat-7.0.57.tar.gz (3)nginx-1.7.7.tar.gz 准备3台Linux机器, ...
- Android studio动态调试
Reference: http://cstsinghua.github.io/2016/06/13/Android%20studio%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF ...
- PHP中的WebService
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间, 无论它们所使用的语言. ...





