转自:jianchi88 http://blog.csdn.net/jianchi88/article/details/6876405 #include<stdio.h> int main() { char a[] = "hello world1"; char *p = "hello world2"; *(a+)='q'; *(p+)='q'; printf("%s\n",a); printf("%s\n",p);…
在x.c中定义了一个字符数组 char s[100],在l.c中进行引用extern char s[200], 有些c程序新手经常把它写成extern char *s. 这两种写法的含义一样吗? 首先得理解声明与定义的含义:定义一个变量意味着要给它进行内存分配, 而声明一个变量则可以在其他文件中, 只是进行一种声明, 表示有这个变量存在, 但是在其他文件中定义, 声明后不用分配内存. 我们看一下extern char s[100]与extern char *s在执行s[10]的取值过程是什么样的…
char * p = "abc"与const char *p = "abc"的区别是什么呢? 第一个语句会产生问题: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] 此时我们只需要改成第二个用法警告就消失了,这是为什么呢? 我们来分别理解以下两个语句,首先要清楚的是char * p语句定义的p是一个指针变量,假设我们用的是第一个语句,那么我们所表达的意思…
char.varchar.nchar.nvarchar.text的区别 1.有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar 所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度,当你输入的字符大于指定的数时,它会截取超出的部分:而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长. 2.n表示Unicode字符,即所有字符都占两个字节,nchar,nvarchar, 字符中,英文字符只需要一…
1.LBP and CSLBP 2.再论char c[]=”hello world”和char *str=”hello world”的区别 /**************代码1*********************/ char *strA() { char str[]="hello world"; return str; } /****************代码2****************/ const char *strA() { char *str="hell…
C語言有兩種字串宣告方式char s[]和char *s,兩者有什麼差異呢? Introduction char s[] = "Hello World"; (只是用字符串常量初始化)char *s  = "Hello World"; 皆宣告了s字串,在C-style string的函數皆可使用,但兩者背後意義卻不相同. char s[] = "Hello World"; 的s是個char array,含12個byte(包含結尾\0),"…
#include <iostream> #include <string> using namespace std; void convertUnCharToStr(char* str, unsigned char* UnChar, int ucLen) { int i = 0; for(i = 0; i < ucLen; i++) { //格式化输str,每unsigned char 转换字符占两位置%x写输%X写输 sprintf(str + i * 2, "%…
我用FillChar()函数时,发现两个版本中的Char不一样. 在delphi7中 procedure TForm2.Button1Click(Sender: TObject); var s: array[0..3] of Char; i: integer; begin FillChar(s, SizeOf(s), '1'); // 填充字符 ShowMessage(s); // 1111 end; 在XE中同样的代码,s却是这样: 把Char改成AnsiChar 就可以了 可能是应为delp…
1. 前者定义P为常量,即只能单向赋值一次,P++展开为p=p+1,重复赋值给常量,出错,后者P为地址变量,地址变量是指向该变量的存储地址值如:4B3F6A,不能赋给一个字符值(字符相当于ascii表中对应的整数)如强制赋值,会把原地址变量P变为一个两位数的整数,造成地址指针溢出.而p++,则表示把该地址变量向下一个存储单元移动一位,如4B3F6A到4B3F6B.所以合法. 2.char *const p 修饰指针为常量 指针指向内容可以是变量~既 p++这样的操作不合法 *p='3' 合法 c…
在写代码常常都会写char * p ="hello";这样的代码,虽然不是错误,但却不建议这样用.应该加const修饰.这句话背后的内涵是什么?下面就刨根问底一下:) 这个行为在不同的c和c++的编译器上有会不同的行为,应该说char *a = "hello world";这种写法不能算错误的写法,所以c编译器不报错也不警告.早期的K&C认 为这是完全合法的,但从K&C第二版标准开始就明确指出“修改string literal的结果是未定义的,字符串…