写作日期:2016.08.31 修改日期:2016.09.01 .2016.09.02. 交流qq:992591601 用了几天时间复习了下C语言.对于C语言的字符串操作有些不习惯,于是作为练习,写下了下面这样错误的程序: #include <stdio.h> #define MAX_STR_SIZE 100 void copy_string(char* from, char* to) { while (*to++ = *from++); } void swap_strs(char* str1…
#include <stdio.h> char* stringCopy( char* dest, const char* src ) { size_t i = 0; while (dest[i] = src[i++]); return dest; } int binary_search(int *arr, int key, int n) { int i = n / 2; if (arr[i] < key) { for ( ++i; i < n; ++i) { if (arr[i]…
char[]数组与char *指针的区别 问题描述 虽然很久之前有看过关于char指针和char数组的区别,但是当时没有系统的整理,到现在频繁遇到,在string,char[], char *中迷失了.由于string涉及的内容很多,因此本文中就先不整理了,对char[]和 char *进行了一个整理,原理可能还是不太明白,但至少印象深刻了很多. 整型数组和整型指针 在讨论字符数组.字符指针以及字符串之前,先看下整型数组与整型指针的区别 int a[]={1,2,3};//整型数组,a的指向不能…
int xfun(int *a,int n) { int x = *a;//a的类型是int *,a+1跳动一个int的长度 ; pa < a + n; pa++)//指向同一个类型的指针比较大小,相减是两者之间的元素个数 { //string s = pa - a;// string接受const char*的单参构造函数不是explicit的,但编译器不能把int转换为string类型 decltype(pa - a) t; ][]; decltype(arr) Type; float f…
解决该问题的方法:使用strcpy函数进行字符串拷贝   原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针.   // testArray.cpp…
一.可能的组合: (1)const char*p (2)char const*p (3)char *const p(4)const char **p (5)char const**p (6)char *const *p (7)char **const p 当然还有在(5).(6).(7)中再插入一个const的若干情况,不过分析了以上7中,其他的就可类推了! 二.理解助记法宝: 1.关键看const 修饰谁. 2.由于没有 const *的运算,若出现 const * 的形式,则const实际上…
原文地址:http://hi.baidu.com/todaygoodhj/item/0500b341bf2832e3bdf45180 使用常量字符串初始化char指针,或者使用strcpy复制,从语法上我觉得都是可以的.但是,在这个例子中选择了后者,我觉得是有其他考虑的.因为,ctermid_name是全局的,可能用来传送数据,将str指向这个地址,可能会和其他的函数同步一个内存变量:而使用常量初始化:str="/dev/tty",那么系统会分配地址,这样str的地址是随机的. 个人认…
看看下面的程序的输出: #include <stdio.h>char *returnStr(){    char *p="hello world!";    return p;}int main(){    char *str=NULL;//一定要初始化,好习惯     str=returnStr();    printf("%s\n", str);       return 0;} 这个没有任何问题,因为"hello world!"…
1.http://blog.csdn.net/szchtx/article/details/10396149 char ss[]="C++";  ss[0]='c';                  // 合法 char *p="C++";  p[0]='c';                   // 合法但不正确 该段代码在VS2010下编译可以通过,但是运行时程序会停止工作,为什么呢?原因在于p[0]='c'这一语句.该语句试图修改p指向的字符串的首个字符,…
char *c和char c[]区别 问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确.程序演示: #include <iostream>using namespace std; main(){char *c1 = "abc";char c2[] = "abc";char *c3 = ( char* )…
⒈strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((NULL==strDest) || (NULL==strSrc)) //[1] throw "Invalid argument(s)"; //[2] char * strDestCopy = strDest; //[3] while ((*strDest++=*strSrc++)!='\0'); //[4] return strDestCopy;…
1. string转const char* string s ="abc";constchar* c_s = s.c_str(); 2. const char*转string    直接赋值即可 constchar* c_s ="abc";string s(c_s);  3. string转char* string s ="abc";char* c;constint len = s.length();c =newchar[len+1];strcp…
当 arr 是一个array时,写Java开始的corner case常常会写类似下面的语句: if(arr == null || arr.length == 0){ return 0; } 其实这是两个条件, arr==null 和 arr.length==0 是不同的: arr.length == 0说明 arr is an empty array, which means an empty array is assigned to arr; arr.length would yields…
首先uchar就是BYTE:Typedef unsigned char BYTE: char:就是signed char,是一个字节,8个位.第8位是符号位,所以可以表示-128~127共256个符号. BYTE:没有符号位,可以表示0~255共256个符号. 在计算机中,所有数据都是二进制表示,一个字节有8个二进制位,2个十六进制位,如1111 0000=0xf0.这个字节代表扩展ASCII中的全等于符号('='多一行). 可以把这个字节存成char,表示成-112(0111 0000=112…
http://stackoverflow.com/questions/228532/difference-between-char-isdigit-and-char-isnumber-in-c-sharp Char.IsDigit() is a subset of Char.IsNumber(). Some of the characters that are 'numeric' but not digits include 0x00b2 and 0x00b3 which are supersc…
关于这三者的区别stackoverrflow里有一个答案是这样说的: 3.9.1 Fundamental types [basic.fundamental] 1 Objects declared as characters char) shall be large enough to store any member of the implementation's basic character set. If a character from this set is stored in a c…
已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串.不调用C++/C 的字符串库函数,请编写函数 strcpy. /*编写strcpy函数(10分)已知strcpy函数的原型是    char *strcpy(char *strDest, const char *strSrc);    其中strDest是目的字符串,strSrc是源字符串.(1)不调用C++/C的字…
转自http://blog.chinaunix.net/uid-7608308-id-2048125.html 简介:这是DWORD及LPCTSTR类型的了解的详细页面,介绍了和类,有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处 首先声明,这都是在网上找的资料,我再整理修改的: 一:关于DWORD DWORD就是32bit的unsigned  long无符号长整型,DWORD是双字类型 ,4个字节,API函数中有很多参数和返回值是DWORD的. 二:如何…
1, char a[] = "hello"; char c[] = {'h','e','l','l','o'}; int b[] = {1, 2, 3, 4, 5}; 数组是开辟一块连续的内存空间,数组本身的标识符(也就是通常所说的数组名)代表整个数组,可以使用sizeof来获得数组所占据内存空间的大小(注意,不是数组元素的个数,而是数组占据内存空间的大小,这是以字节为单位的).举例如下: // test.cpp : Defines the entry point for the co…
1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua". string s = tmp; (2) string转换为const char*,利用c_str() EX:  string s = "tsinghua"; const char*tmp = s.c_str(); 2. char*和const char*之间的转换 (1) cons…
const char *p和char const *p是一样的,都表示定义一个指向字符常量的指针,指针的内容(字符)不可变.char * const p表示一个指向字符的指针常量,字符可以改变,但是指针指向的地址不可变.…
C++ char*,const char*,string,int 的相互转换   1. string转const char* string s ="abc";const char* c_s = s.c_str(); 2. const char*转string    直接赋值即可 const char* c_s ="abc";string s(c_s);  3. string转char* string s ="abc";char* c;consti…
1.原版的strcpy()函数原型 char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++) != ‘\0’ ); return address; } 在库函数中,字符的赋值所采用的循环代码,只用了一行代码:while( (*str…
1.以字符串形式出现的,编译器会在结尾自动添加\0,思考,为什么? 存在的C语言方法,如strlen(s),计算字符串的长度,其中s指针.strlen要计算字符串长度,必须知道哪里是结尾,因此使用\0表示结尾.只有字符数组才有\0的概念,其它类型(int)的数组没有这个概念.因为其他类型的数组或者指针,没有strlen这种方法. 那么问题来了,int数组如何计算长度呢?如int a1 = {3,7,9,}; 使用sizeof(a1)/sizeof(int). 2.数组可以在栈上分配,也可以在堆上…
一.定义 1.char char是定长的,也就是当你输入的字符小于你指定的数目时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. 例如:char(8),最多可输入4个汉字或者8个字母或数字(输入数据的字节长度最大为8).       2.varchar[(n)]  长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节.所输入的数据字符长度可以为零. 例如:va…
什么是无符号char类型?与常见的char类型有何不同? 在c++中有三种不同的字符类型:char,signed char,unsigned char.如果要应用与文本字符,就使用不加限制的char类型即可,比如:'a' 或者'0',"abdcddfd". char类型也可以被当作数字类型值使用,但是这个值是有符号或是无符号的无法唯一确定下来.如果将字符限制在ascii范围内,比较字符这样的行为是安全的.signed char范围-128~127.unsigned char范围为0~2…
1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改). 2.char* p      : p is a pointer to char   意思就是可通过p指针来修改p指向的内容 3.char* const p: p is a const pointer to char   意思就是p指针是一个常指针,他指向的内存地址不能变,定义的时候就得初始化   一旦给…
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字. 在实际使用过程种有什么区别呢? 主要是符号位,但是在普通的赋值,读写…
Undefined symbols for architecture i386: “_OBJC_CLASS_$_XXX”, referenced from: objc-class-ref in XXX ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)   如果真机调试就是 undefined sy…
三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用strip()之类的函数去过滤空格.varchar:存储变长数据,但存储效率没有CHAR高.保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留.另外,varchar类型的实际长度是它的值的…