c/c++指针精讲和需要注意的地方
来源:互联网 发布:淘宝小李84 编辑:程序博客网 时间:2024/05/16 07:37
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)
}有点事 下次再补充
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的值 这样体现出的意义不大
但是如果用在函数传参那就不一样了;
0 0
- c/c++指针精讲和需要注意的地方
- C 返回字符串(指针类) 需要注意的地方
- C Tips:需要注意的地方
- C语言使用需要注意的地方
- C语言需要注意的地方
- C#_需要注意的地方
- 指针需要注意的地方
- Symbian系统上C工程师需要特别注意的地方
- C语言中需要注意的一些地方
- c和c++关于struct需要注意的地方
- C++转向Objective-C需要注意的地方(基础)。
- 总结一下c++(新手)需要注意的地方
- 【C# 调用C/C++动态库 需要注意的地方】
- c语言中需要注意的一些地方
- C语言中移位符需要注意的地方
- C语言(5) 函数使用需要注意的地方
- c语言中指针的用法以及注意的地方
- C 应该注意的地方
- ubuntu 16.04 + lnmp1.3 搭建 owncloud
- bzoj4570 [Scoi2016]妖怪
- javaScript实现继承的5种方式
- 提示语
- AngularJS-作用域
- c/c++指针精讲和需要注意的地方
- MySQL——问题:mysql(5.7版本)目录下没有data文件夹
- Introduction to Programming with c++ 13-7 eof的置位时机
- 常量和变量,操作系统
- Docker内存限制
- Python os.walk() 简介
- Ubuntu 16.04 安装opencv3及其扩展模块
- POJ-2104-线段树,bindary search
- App在Luancher上生成2个图标