c/c++指针精讲和需要注意的地方

简介:


int *x =&10;//不能对10取地址 因为他不在 堆栈区
//堆栈常量区的都b可以对变量取地址

10就是一个字面量 不能取地址


 1:指针是一种数据类型

1)指针也是一种变量,占有内存空间,用来保持内存地址,在一般情况下所有指针、

都是4个字节;

2)*p操作内存

再指针声明时,*号表示所声明的变量为指针,

在指针使用时,*号表示操作指针所指向的内存空间的值,

*p相当于通过地址{p变量的值}找到一块内存,然后操作内存

*p放在等号左边赋值(给内存赋值)

*p放在等号的右边取值(从内存获取值)


3)指针变量和它指向的内存块是两个不同的概念;


 char s='a';
char *p=&s;
*p='b';//此操作对不会改变指针变量的值,但是会改变所指向地址的值


保证指向的内存是可修改的


char*p="abcdeff"; //c++编译器会做两个操作先给字符串分内存再给 p 分配4个字节内存
然后把a的地址赋值给 *p  也就是字符串的首地址


char *p=NULL;

strcpy([,"abcde");  //不可以向空内存写数据


 4)怎么理解(多级)指针做函数参数

a.站在c/c++编译器的角度,如果是指针的形参 编译器只会分配四个字节的内存

例如:

/*

void sed(char *p1);void sed(char*  p1)

void send(char**p1);void send(char *   * p1);

void send(char ***p1);void send(char *p[])

void send(char (*p)[10]);void send(char ******p);

*/  


二间接赋值时指针存在最大的意义

1指针变量和他所指向的内存空间是两码事

int a=10;

a=15;    //直接赋值

int *p=NULL;

*p=20;  //*p 放在左边就是间接修改了a的值 这样体现出的意义不大


但是如果用在函数传参那就不一样了;


int Ge(int*p)
{
    *p=30;
}
int main()
{
	int a=10;
	Ge(&a)
}

有点事 下次再补充





 本文转自超级极客51CTO博客,原文链接:http://blog.51cto.com/12158490/1876946,如需转载请自行联系原作者


相关文章
|
存储 安全 算法
【C++智能指针 相关应用】深入探索C++智能指针:跨进程、动态库与最佳实践
【C++智能指针 相关应用】深入探索C++智能指针:跨进程、动态库与最佳实践
64 5
|
1月前
|
存储 安全 C++
在C++指针和引用
在C++指针和引用
|
1月前
|
JSON JavaScript 前端开发
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
267 0
|
2天前
|
C++
【C++11(三)】智能指针详解--RAII思想&循环引用问题
【C++11(三)】智能指针详解--RAII思想&循环引用问题
|
2天前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
9 0
|
2天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
25 1
|
17天前
|
存储 C++
C++指针
C++指针
|
28天前
|
存储 编译器 C语言
【c++】类和对象(二)this指针
朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针
【c++】类和对象(二)this指针
|
29天前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
1月前
|
存储 安全 数据库连接
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
82 0