C 指针随笔

1.指针是一个存储计算机内存地址的变量。

Int a;定义一个变量

Int *p;//定义一个 p 指针

p = &a;//与 int *p = &a;等价

根据出现的位置不同,操作符 *既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,*表示这里声明了一个指针。其它情况用到*表示指针的取值。

&是地址操作符,可以引用一个内存地址。在变量名字前使用&操作符,可以得到该变量的内存地址。

2.数组是一段连续的内存空间,可以储存特定对象,指针用来储存单个内存地址。可以把数组的地址赋值给指针,指针指向的是数组的第一个元素的地址。

Int arr[3] = 1,2,3;

Int *p = arr;//与 int *p = &arr[0];等价;

3.和数组一样,指向结构体的指针储存的是结构体第一个元素的内存地址。

4.指针的指针存放的是第一个指针的内存地址

如果p1保存着p2的内存地址,那么*p1就是返回 p1保存的对象

&:取地址。*:取值。

时间: 2024-10-10 21:34:26

C 指针随笔的相关文章

C语言之指针随笔

概念:指针(变量)是一个特殊变量,它里面存储的内容为内存的一个地址,对于一个指针(变量),要搞清楚一下四个方面: (1)指针本身的类型 (2)指针所指向的类型 (3)指针的值即指针所指向的内存区 (4)指针本身所占内存的大小 一.指针的类型 把指针声明语句里的指针名字去掉,剩余的就是指针的类型,例如  int*p; p 是指针名, 那么 int* 就是指针类型即整型指针 二.指针所指向的类型 当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存 区里的内容当做什么来看

c++指针随笔1

#include "stdafx.h"#include <iostream>#include <map>using namespace std;using std::map; class CA;typedef map<int,CA*> MAP; class CA {public:    int a;}; int _tmain(int argc, _TCHAR* argv[]){    MAP map;    for(int i=0;i<2;i+

关于c语言 指针课堂随笔

右左法则:首先从最里面的圆括号看起,然后往右看,再往左看.每当遇到圆括号时,就应该掉转阅读方向.一旦解析完圆括号里面所有的东西,就跳出圆括号.重复这个过程直到整个声明解析完毕 1.指针的判断应该是从未定义的标识符开始阅读,而不是从括号读起,之所以是未定义的标识符,是因为一个声明里面可能有多个标识符,但未定义的标识符只会有一个 实例: int(*func)(int*p)    先从标识符func找起往右走  碰到圆括号 反转 从左走 func的指针  再往右碰到圆括号这是个函数    func是指

C语言与指针学习随笔

勉励自己学习用! -->变量不一定按照声明顺序保存在内存中 -->&运算符可取得变量的地址(指向变量的指针)     *运算符可取得地址的变量 int j=10; int *p=&j; //指针p指向j int k=*j; //取得指针p指向的变量 -->声明 int *p; int* p; //等价int* p,p1;  //无法声明两个指针变量,第二变量为int型 -->对指针加N,指针前进“当前指针指向的数据类型长度xN” -->数组下标从0开始 int

C++ Primer 随笔 Chapter 4 数组和指针

1.数组:数组是由类型名.标识符和维数组成的符合数据类型,类型名规定了存放在数组中的元素类型,维数规定数组中包含元素的个数而标识符就是数组的名称.例如: int  arr[10]; 其中 int 是类型名,arr是标识符而 10 是数组的维数. 2.数组的定义和初始化:数组的初始化要注意以下几点 (1). 数组中存放的元素类型不能是引用类型,除此之外可以是其他任何类型. (2). 数组的维数必须是字面值常量.枚举常量或者常量表达式(但不能是在运行时才知道其值得常量表达式) (4). 显示初始化整

C语言随笔3:指针定义、数据在地址中的大小端排列

指针变量:用于存放另一个变量的地址 (指针变量所占空间大小由操作系统决定32/64位  4/8字节 声明且定义:int  *p=&a: 声明.定义:int  *p: p= &a: Double *p =d: (int)(p+1)-(int)p = 8: P指针变量所代表地址 指向 double类型变量,所以p+1,是在double基础上,偏移8个字节地址. 不同类型的指针的区别:就在于+1始偏移量的不同.本质 都三 超过1字节地址存放的变量,按照大小端格式在内存地址中排列 若p = 0x0

C语言随笔4:指针数组、数组指针

数组: 1:数组名为地址,表达方法: Int A[10]; A; &A; &A[0]; 数组名是指针常量 2:指针数组(每个元素都是指针 指针数组:double *a[10]; 每个元素占4/8个字节: 3:数组指针:.int (*p2)[5]: 指向数组的指针,在多维数组使用 p2指向 5个int的数组 p2+1:地址增加5个int变量的长度 指向二维数组的每行首地址. 注:(*p)的括号不可省略,[ ]的优先级高于*,若不加括号就是指针数组了. 初始化办法:int a[2][3]; i

C语言随笔5:函数、函数指针

函数 C语言中函数参数传递时,将实参的值拷贝到函数参数的存储区中.这种传递参数的方式称为按值传递. 函数不会访问实参本身,访问的是函数存储在栈区的副本,不会改变实参.函数凋用结束,函数在栈区的内容释放. 若要改变实参本身.需用指针传递待修改变量的地址,使函数参数保存该变量地址的值.然后在函数中,通过参数保存的地址间接访问待修改的变量.大部分书籍,将这种做法称为按址传递或按引用传递.实际上,这种传递方式仍然是按值传递,只不过传递的是地址的值. 非void的函数,返回值不能做为左值. 因为函数返回值

C语言之指针基础概念

开通博客园以来第一次写随笔,就写一下关于C语言指针的一些感想吧. 很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子.其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了. 首先简介一下指针的概念好了.指针本身也是一个变量,只不过这个变量的值比较特殊,它不是常规的整型数或者浮点数,而是指向另一个变量地址的值.通过指针的值可以知道另一个变量的地址以及存在该地址中的具体数值(该数值可以是整型,浮点型,结构体,甚至也可以是一个指针),通过指针得到另一个变量的