char p[]与char *p的区别】的更多相关文章

写作日期: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…
原文地址:http://hi.baidu.com/todaygoodhj/item/0500b341bf2832e3bdf45180 使用常量字符串初始化char指针,或者使用strcpy复制,从语法上我觉得都是可以的.但是,在这个例子中选择了后者,我觉得是有其他考虑的.因为,ctermid_name是全局的,可能用来传送数据,将str指向这个地址,可能会和其他的函数同步一个内存变量:而使用常量初始化:str="/dev/tty",那么系统会分配地址,这样str的地址是随机的. 个人认…
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* )…
转自http://blog.chinaunix.net/uid-7608308-id-2048125.html 简介:这是DWORD及LPCTSTR类型的了解的详细页面,介绍了和类,有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处 首先声明,这都是在网上找的资料,我再整理修改的: 一:关于DWORD DWORD就是32bit的unsigned  long无符号长整型,DWORD是双字类型 ,4个字节,API函数中有很多参数和返回值是DWORD的. 二:如何…
char[]数组与char *指针的区别 问题描述 虽然很久之前有看过关于char指针和char数组的区别,但是当时没有系统的整理,到现在频繁遇到,在string,char[], char *中迷失了.由于string涉及的内容很多,因此本文中就先不整理了,对char[]和 char *进行了一个整理,原理可能还是不太明白,但至少印象深刻了很多. 整型数组和整型指针 在讨论字符数组.字符指针以及字符串之前,先看下整型数组与整型指针的区别 int a[]={1,2,3};//整型数组,a的指向不能…
一.定义 1.char char是定长的,也就是当你输入的字符小于你指定的数目时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. 例如:char(8),最多可输入4个汉字或者8个字母或数字(输入数据的字节长度最大为8).       2.varchar[(n)]  长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节.所输入的数据字符长度可以为零. 例如:va…
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字. 在实际使用过程种有什么区别呢? 主要是符号位,但是在普通的赋值,读写…
三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用strip()之类的函数去过滤空格.varchar:存储变长数据,但存储效率没有CHAR高.保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留.另外,varchar类型的实际长度是它的值的…
char str[] = "abcd";定义了一个局部字符数组,返回它的地址肯定是一个已经释放了的空间的地址. 此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后 此数组被销毁,所以返回的指针也就指向一块被销毁的内存,这种写法得不到想要的结果,是错误的. char* get_str(void) { char *str = "abcd"; return str; } char* str = "abcd";表示先定义个字符串常量,存储在…
char* get_str(void) { char str[] = {"abcd"}; return str; } char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空间的地址.此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后此数组被销毁,所以你返回的指针也就指向一块被销毁的内存,这种写法是错误的. char* get_str(void) { char *str =…