1、
c风格字符串的两种形式:
类型 —— 该类型所占的空间大小;
对象 —— 对象的实际占用空间大小;
1、char a[] = {'a', 'b','v', '\0'}; 手动添加结束符‘\0’
2、char a[] = "abv"; 默认添加'\0'
2、sizeof 返回的值表示的含义如下(单位字节):
数组 —— 编译时分配的数组空间大小;
指针 —— 存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为 4 );类型 —— 该类型所占的空间大小;
对象 —— 对象的实际占用空间大小;
函数
——
函数的返回类型所占的空间大小。函数的返回类型不能是
void
。
3、
struct link
{
char data;
[];
} node;
在C语言中【】里必须为必须为struct link *next; C++中可以为link *next.
4、
int i = 3; printf("%d %d", ++i, ++i)函数的参数是从右向左压栈的,输出时从栈顶开始,相当于: int i = 3; ++i; ++i; printf("%d,%d",i,i);所以是 5,5;
再举一个例子,int i = 1; printf("%d,%d", i += 2, i *= 3); 在输出i之前先进行了i *= 3和 i += 2;最终i = 5;所以结果是5,5;
5、常量指针和指针常量:
const char *p
char const *p
上面两者一样,p是一个指向字符常量的指针,p所指向内存地址中的内容是不可以更改的
char * const p
表示常指针,即该指针指向的地址是不可以改变的
void main(void) { char A[] = "hello"; char B[] = "world"; const char* pa ; char const *pc; char* const pb = B; // const object must be initialized if not extern pa = A; // OK //*pa = 'b'; // compile error pc = A; // OK // *pc = 'c'; // compile error *pb = 'b'; // OK // pb = A; // compile error }