C的指针

122 阅读1分钟

来自 中国大学 MOCC 浙江大学 翁凯老师的C语言课

&符号

通过&运算符可以获取到变量的内存地址,操作数必须为变量,它的大小取决于操作系统是几位,比如32位,4个字节 可以用sizeof() 验证

内存地址即是指针

关于数组的内存地址:

我们发现:

好像数组本身就是一种内存地址,记录的是数组中第一个元素的内存地址

而且内存里数组内元素之间的内存地址是挨着的

什么是指针呢?(感觉我说的应该不是很好)

指针是存放内存地址的类型变量,通常 int *p 我们可以声明一个变量名为p的指针,为啥是习惯是p,因为指针是point

问个问题,以下表达的一样吗?

int* p

int *p

答案:一样的,c中没有int* 这种类型, 这里其实表达的是*p是一个int

那再问个问题:

int*p ,q

我这样声明 q是什么类型的?

读值与写值

test(int *p){

int i=*p;//读取值

*p=1;//写值

}

指针数组数组

这里的 int a[] 是什么? 如果用sizeof()去调用获取到的是数组的长度吗?