这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序: #include <stdio.h> int main(int argc, char *argv[]){ char day[15] = "abcdefghijklmn";  char* strTmp = "opq…
1. 数组与指针: 对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来: 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下标为0的元素的指针: 实际上,对于数组下标的运算,实际上都是通过指针进行的: 如: int a[10]            ,数组名 a 实际上为指向数组第0个元素的指针: 所以, a[i] 可以表示为  *(a+i), 即对指针求值: int b[10][31]            表示了b…
字符数组 C++中字符数组用char str[]能够用来表示一个字符串. (1)   数组的大小和字符串的长度. 数组的大小一定要大于字符串的长度,由于系统会自己主动补上一个'\0'作为字符串的结束标志. 当然对于未初始化的也补'\0'. #include <iostream> #include <string> using namespace std; int main() { char str[11] = "I am happy"; // 系统会自己主动补上…
public static void main(String[] args) { //1.字符数组 转换成 字符串 //(1)直接在构造String时转换 char[] array = new char[] {'a','b','c','d','e','f','g'}; String str = new String(array); System.out.println(str); //(2)调用String类的提供的方法的valueOf() String str2 = String.valueO…
先看代码: #include <stdio.h> int main(void) { ] = "; char * strTmp = "abcdefg"; int i; printf(]); printf("day is %p\n", day); printf("\n&strTmp is %p\n", &strTmp); printf(]); printf("strTmp is %p\n",…
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串 在c语言中,将字符串作为字符数组来处理.(c++中不是)…
1. 概述2. 字符2.1 字符定义和大小2.2 字符的输入和输出2.3 字符的计算3. 字符数组3.1 字符数组的定义和大小3.2 字符数组的输入和输出3.3 字符数组的计算4. 字符串4.1 字符串的定义和大小4.2 字符串的输入和输出4.3 字符串的计算5 字符指针5.1 指向字符的指针5.2 指向字符数组的指针5.3 指向字符串的指针6. 二维字符数组6.1 纯数组表示6.2 字符指针表示 1. 概述 数据类型是现实世界信息表示基本元素.字符则是基本数据类型之一,与之对应的是数字. 限于…
c语言字符数组和字符串:1.存放字符的数组称为字符数组 char str[]2.'\0'也被称为字符串结束标志3.由" "包围的字符串会自动在末尾添加'\0'4.逐个字符地给数组赋值并不会自动添加'\0'5.局部变量初始化为零值会自动添加结束标志6.直接使用一个指针指向字符串的形式 char* str7.最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区.全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(…
一. 第一 整型数组的存放,数组最后是不加'\0'的,字符串会自动加上,因此存放字符的时候数组的大小要比实际字符的多一个 第二 整型数组 每一个单元是4个字节的,字符串是一个一个字符存放的,每个字符占一个 二,字符数组与字符串的区别 C语言中没有专门的字符串变量,如果要将一个字符串存放在变量中,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符. <1> 定义: char c[10] 字符型与整型互相通用,因此 int c[10] 也可以定义字符数组.但由于两种…
C语言中字符串通常用字符指针和字符数组来定义: char* pS="abcdef"; char s[]="abcdef"; 这两种方式都会在结尾为字符串隐式补结束符'\0' 使得 strlen(pS); strlen(s); //均为6,未计算带'\0'的长度,拷贝字符串时,真实容量应+1: 若使用sizeof可以看到 sizeof(s)/sizeof(char);//这个值为7 所以在使用strncpy时切记strlen+1: 另,printf和strcpy等均以…
转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.…
最近用base64编码传图片遇到了点问题,总结下. 首先总结下base64编码的逻辑,来自网络:https://www.cnblogs.com/zhangchengye/p/5432276.html Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节 数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4组,即每组6位.再在每组的的最高位前 补两个0凑足一个字节.这样就把一个3字节为一组的数据重新编码成了4个字节.当所要编码…
the-way-to-go_ZH_CN/07.1.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/07.1.md Go 语言中的数组是一种 值类型(不像 C/C++ 中是指向首元素的指针),所以可以通过 new() 来创建: var arr1 = new([5]int). 那么这种方式和 var arr2 [5]int 的区别是什…
1.字符数组和字符串 C语言没有字符串类型,用字符数组模拟 字符串一定是字符数组,字符数组不一定是字符串 如果字符数组以字符'\0'('\0'等同与数字0)结尾,那么这个字符数组就是字符串 char a[]={'a','b','c'};//字符数组,不要指定大小,否则会添加0,变成字符串 ]={'a','b','c'.'\0'};//字符串 ]={};//字符串 2.初始化 include<stdio.h> int main() { char a[]={'a','b','c'}; printf…
无意中发现了一个非常有意思的技术类型小品文系列,通过大牛指导菜鸟的方式,解说讲C++知识,有的非常基础却是开发中easy忽略的地方. [Elminster的专栏] http://blog.csdn.net/Elminster/article/contents [Solmyr 的小品文系列之中的一个:字符串放在哪里? ] http://blog.csdn.net/elminster/article/details/9730 转帖至此,给出链接,原文就不贴了,总结并扩展一下方便以后回想. 字符数组(…
字符串与字符数组 C语言中没有字符串这种数据类型,可以通过char的数组来替代: 字符串一定是一个char的数组,但char的数组未必是字符串: 数字0(和字符'\0'等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char的数组. #include <stdio.h> int main() { char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' }; //普通字符数组…
C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[][] = { "Justinian", "Momo", "Becky", "Bush" }; 在内存中的存储: J u s t i n i a n \0 M o m o \0 \0 \0 \0 \0 \0 B e c k y \0 \0 \0 \0 \0 B u s h \0 \0 \0 \0 \0 \0 这种方式会造成内存空间的浪费…
go语言中的数组切片:特立独行的可变数组 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多.但是在使用了一段时间后,觉得这东西埋的坑不少,使用方式上和arrayList也有很大的不同,在使用时要格外注意. slice的数据结构 首先说一下slice的数据结构,源码可以在google code上找到,http://code.google.com/p/go/source/browse/src/pkg/runt…
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组. 数组就是在内存中连续的相同类型的变量空间.同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的. 数组属于构造函数类型: 一个数组可以分解为多个数组元素:这些数组元素可以是基于数据类型. 二.一维数组 1>.一维数组的定义  数组名称符合标识符的书写规定(数字,英文字母,…
项目特殊需要,调用ActiveX三维控件进行控件某一特殊部位的截图操作,这个截图保存由ActiveX控件控制保存到本地是没问题的,现在需要将这个截图上传到服务器,多人共享,就牵扯到需要读取本地文件……后沟通后,ActiveX控件方提供一个接口,返回相关截图文件的Base64编码字符串,由Web应用程序转换为对应格式,存储在服务器即可. 遇到问题: Base-64 字符数组或字符串的长度无效 直接调用Convert.FromBase64String方法时,报“Base-64 字符数组或字符串的长度…
Base64 报错 的解决办法, 报错如下:1. FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. ]    System.Convert.FromBase64Str…
Go语言中底层数组和切片的关系以及数组扩容规则 demo package main import ( "fmt" ) func main() { // 声明一个底层数组,长度为10,容量为10 arr := []int {0,1,2,3,4,5,6,7,8,9} fmt.Printf("[%T]len(arr)=%d,cap(arr)=%d \n",arr,len(arr),cap(arr)) // 声明两个切片,分别取底层数组的[1,4],[7:] s1 := a…
数组名同时也是该数组首元素的地址,而指针提供了一种用来使用地址的符号方法,因此指针能够很有效地处理数组. 将一个整数加给指针,这个整数会和指针所指类型的字节数相乘,然后所得的结果会加到初始地址上 date + == &date[]; // 相同的地址 *(date + ) == date[]; // 相同的值 在函数原型或函数定义头的场合中(并且也只有在这两种场合中),可以用int ar[]代替int* ar,处理数组的函数实际上是使用指针做为参数的 int sum(int* ar, int n…
在C语言中,没有字符串类型,但是可以通过字符数组来模拟字符串. 字符串可以在栈上,堆上,静态区和常量区进行分配. char buf[50]  = "abc"; char buf[] = "abc"; 对应于第一种,编译器会自动进行优化,也就是buf的前三个元素分别是“a”,“b”,“c”,从buf[3]到buf[49]都是“\0” 对于第二种,编译器会自动推断出元素的长度,因此第二种仅仅相当于是第一种的前4个字符. 上面两种都称为C 类型的字符串,这是因为它们都是以…
原文:http://blog.csdn.net/metasearch/article/details/2856097 在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串.总结起来有以下三种方式: (1) char str[10]=""; (2) char str[10]={"}; (3) char str[10]; str[0]="; 第(1)(2)种方式是将str数组的所有元素都初始化为",而第(3)种方式是只将str数组的第一个元…
用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'}; // 给部分数组元素赋值 char d[]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' }; //对全体元素赋值时可以省去长度 字符数组实际上是一系列字符的集合,也就是字符串(String).在C语言中,没有专…
环境:vs2010 说明:在阅读这部分内容之前应该先明确C++内存分配问题 ,那一篇文章说的比较清楚. 1.字符数组,初始化: char str1[]="abc"; char str1[]={"abc"}; char str1[]={'a','b','c','\0'};//如果没有\0,运行通过,但有不可以意料的结果 ]="abc";//字符数量<5,因为必须包含尾巴\0 一些操作: str1[]='g';//更改字符串中某个值 cout&…
C语言中只有字符型类型,没有字符串型类型.字符类型用一个带符号的8位二进制编码表示,其性质与int相同,只是只有一个字节.表示字符的ASCII编码使用其中的0~127,所以要明白字符类型(char)其实是一个一字节整型,并不只用来表示字符.由于C中没有字符串类型,所以在处理字符串时是利用字符型数组来实现的,在字符型数组中一个接一个地存储字符的ASCII编码,并在最后一个字符后加一个'\0'表示这一串字符结束了,就形成所谓“字符串”.…
1. 数组的初始化 数组的初始化方法有很多,常用的方法有 定义时初始化 ]={,,}; 或 ]={}; //未初始化的元素全为0: 定义后遍历赋值初始化 int arr[3]; for(int i=0;i<3;i++) arr[i]=i; C99之后,出现了另一种十分方便的初始化方式.即利用元素位置来初始化该元素,使用方法如下 ]={[]=,}   初始化后的结果 arr[]={,,,,} 此种方式的缺点是,后面的初始化后覆盖前面的初始化,即同一个初始化语句,最终的结果决定于靠后的语句.例如 a…
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String args[]) { String str = "hello"; // 定义字符串 char[] data = str.toCharArray(); // 将字符串变为字符数组 for (int x = 0; x < data.leng…