指针,调用,返回
来源:互联网 发布:淘宝卖家号出售 编辑:程序博客网 时间:2024/05/16 08:30
指针一直以来都是一个大问题,似懂非懂,今天又懂了一丢丢,赶紧记录下来
1.怎样引用指针变量:
a.给指针变量赋值:p=&a;//把a的地址赋给p
b.引用指针变量指向的变量:
p=&a;
printf(“%d\n”,*p);指针变量p所指向的变量值是变量a的值。
如果下面有语句*p=1,则a=1.
c.引用指针变量的值:printf("%d\n",p);相当于输出&a(*p=a,p=&a两个要注意区分啊)
首先定义了int *p,p是指针变量,而不是*p是指针变量,int*p表示p是指向int型的指针变量。
int *p;int a = 1;
p = &a; //指针变量p指向整形变量a,
printf("%d\n",*p)-->1
printf("%d\n",p)-->是一个地址(p是指针,指针就是地址)
printf("%d\n",&a)-->是一个地址
输出&a,,,,,,*p,,,,,,,,p,,,,,,,都是不一样的结果。
&a是取地址,*p是取出内容,*p=a=1;---》(注意看到有符号*的就是取出内容)
2.通过指针引用数组
a.数组名就数组首元素的的地址:p=&a[0] //p的值就是a[0]的地址
而不是代表整个数组 p=a; //p的值就是数组a首元素a[0]的地址
b.如果指针变量p已经指向数组的一个元素了,则p+1表示指向同一数组中的下一个元素
如果a是一个数组,*a=a[0];
a+1指的是首元素地址移动一位,指向a[1],------》a[i]=*(a+i)
&a+1表示整个数组移动1位。
c.注意:*(a+i)=a[i];
3.通过指针引用字符串
a.有些字符数组没有名字,不能通过数组名来引用,只能通过指针变量来引用。
对字符指针变量string 初始化,实际上是吧字符串第1个元素的地址赋给指针变量string,绝对不是吧字符串放到字符指针变量里面去
char*string ="i love china";//string 指向字符串的第一个字符
printf(”%s\n”,string);//输出的是i love china,虽然string指向的是字符串的第一个字符,但是会输出第一个字符串之后的所有字符
b.可以通过字符数组名或者字符指针变量可以输出一个字符串,但是对于一个数组型数组就不可以通过输出数组名来获取数组里的所有数据。
c.赋值方法:可以对字符指针赋值,但是不能对数组名赋值
//字符指针变量赋值
char*a="i love china";
或
char *a;
a="i love china";
//数组的初始化
char str[14]="i love china";-------->正确
、、、、、、、、、、、、、、、、、、、、、、、、
char str[14];
str[]="i love china"---->错误的
4.指向函数的指针
、、、、、、、、、、、、、、、、、先这么多,后面还有一些不是很懂
NULL只是一个概念,叫作空值,其值本身没有任何含义,可以用0代替,也可以用1,...代替,只要这些值不会与系统实际的有效地址冲突即可。
char*str=NULL;
初始化为空指针,这个时候str的值为0x0;
空指针是一个特殊的指针值,也是唯一一个对任何指针类型都合法的指针值。指针变量具有空指针值,表示它当时处于闲置状态,没有指向有意义的东西。空指针用0表示,C语言保证这个值不会是任何对象的地址。给指针值赋零则使它不再指向任何有意义的东西。为了提高程序的可读性,标准库定义了一个与0等价的符号常量NULL. 程序里可以写 p = 0; 或者 p = NULL; 两种写法都把p置为空指针值。相对而言,前一种写法更容易使读程序的人意识到这里是一个指针赋值。
- 指针,调用,返回
- 调用函数,返回指针
- C#调用返回C++指针的缓冲区,并释放
- C# 调用C/C++ Dll(参数含char*指针,返回char*指针)
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- C语言:返回指针的函数,函数声明、定义和调用,嵌套调用
- 调用指针
- Delphi调用VC动态库的Char指针返回有关问题
- C++内存分配、函数调用(值传递、指针传递、引用传递)、返回值问题
- 类成员函数返回(成员)函数指针,包装类调用外部类的成员方法
- C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针
- 返回指针时注意事项
- 返回函数指针。
- 关于函数返回指针
- 返回局部变量指针
- fopen返回空指针
- 返回,局部,指针。
- 怎样返回一个指针。
- 顺时针打印矩阵
- HDU_1114_Piggy-Bank(完全背包)
- LintCode笔记(8)——丑数II
- Jsp---JSTL
- 提高工作效率篇之命令行版的 Alfred —— z
- 指针,调用,返回
- RuntimeViewer ver 1.01
- 欢迎使用CSDN-markdown编辑器
- mysql 如何预防死锁和处理死锁
- Java 变量定义的时候注意事项
- Myeclipse 如何进行多文件夹管理
- POJ 1986
- Hello Mr.J——shiro 简单地认识
- JAVA 中常见异常分类和异常类型