C和指针学习笔记

来源:互联网 发布:wps表格怎么引用数据 编辑:程序博客网 时间:2024/06/05 00:39

在C语言中,数组参数是以引用(reference)形式进行传递的,也就是传址调用,而标量和常量则是按值(value)传递的。

应该使用typedef而不是#define来创建新的类型名,因为后者无法正确处理指针类型,例如:

#define d_ptr_to_char char *

d_ptr_to_char a,b;

正确的声明了a,但是b却被声明为一个字符。在定义更为复杂的类型名字时,如函数指针或指向数组的指针,使用typedef更为合适。

凡是在任何代码块之外声明的变量总是存储于静态内存中,也就是不属于堆栈的内存,这类变量称为静态(static)变量。

在代码块内部声明的变量的缺省存储类型是自动的(automatic),也就是说它存储于堆栈中,称为自动(auto)变量。

const int data = 20; //只有初始化的时候可以赋值,const限定了你不能随便修改

const int *p = # //p是指向常量的指针,能改变指针变量的值,但不能改变指针变量指向的值,与int const *p = #等价

int * const p = # //p是常量指针,不能改变指针变量的值,但能改变指针变量指向的值


前缀操作符在进行复制之前增加变量的值,后缀操作符在进行复制之后才增加变量的值。

&&操作符的工作原理:&&操作符的左操作数总是首先进行求值,如果它的值为真,然后就紧接着对右操作数进行求值。如果左操作数的值为假,那么右操作数便不再进行求值,因为整个表达式的值肯定是假的,右操作数的值已无关紧要。||操作符也具有相同的特点,它首先对左操作数进行求值,如果它的值是真,右操作数便不在求值,因为整个表达式的值此时已经确定。这个行为常常被称为“”短路求值(short-circuited evaluation)“”。

两个相邻操作符的执行顺序由它们的优先级决定。如果它们的优先级相同,它们的执行顺序由他们的结合性决定。

指针也是一种变量,占有内存空间,用来保存内存地址。


2 0