黑马程序员--C语言基础--指针
2015-11-10 18:01
295 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
/*
1.指针的定义格式:
数据类型 *指针变量名
2.指针的赋值:
指针变量内存储的是指针所指向变量的地址
指针变量名=&... 或者 指针变量名 =数组名
注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义
*/
3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针
4.指针指向函数
定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)
给指针变量赋值:指针变量名=函数名称
调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)
作用:这个指针就是用来间接调用函数的
6.指向指针的指针
定义:数据类型 **指针变量名
赋值:指针变量名=&变量
/*
1.指针的定义格式:
数据类型 *指针变量名
2.指针的赋值:
指针变量内存储的是指针所指向变量的地址
指针变量名=&... 或者 指针变量名 =数组名
注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义
*/
int main() { //定义指针变量 int *p; //定义整形变量 int a=10; //给指针变量赋值,给的是变量a的地址符 p=&a; //获取指针变量的值 printf("%d",*p); }
3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针
int main() { //定义char*型的指针变量 char *p; // 定义字符数组 char arr[]={'a','b','c','\0'}; //给指针变量赋值 也可以 p =arr[0] p=arr; //利用指针访问数组 printf("%c",*(p+1)); //代表获取数组从0+1位置点元素 printf("%c",*p); //访问的是数组的第0个元素 return 0; }
4.指针指向函数
定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)
给指针变量赋值:指针变量名=函数名称
调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)
作用:这个指针就是用来间接调用函数的
#include <stdio.h> //声明函数 int test(int,int); int main() { //定义指向函数的指针 int (*p)(int,int); //给指针赋值 p=test; //利用指针调用函数,并接受返回值 int sum= p(1,2); int sum2= (*p)(10,20); //输出 printf("sum=%d,sum2=%d",sum,sum2); return 0; } //定义函数 int test(int a,int b) { return a+b; }
6.指向指针的指针
定义:数据类型 **指针变量名
赋值:指针变量名=&变量
int main() { int a=10; //定义指针,指向a int *p=&a; //定义指向指针的指针 int **p2; //给p2赋值 p2=&p; //利用指针指向a改变a的值 *p=20; printf("p改变:a=%d\n",a); //利用指向指针的指针改变a的值 *(*p2)=30; //*p2 就代表指向指针p ,然后再加上 * 就相当于利用指针p去访问a printf("p2改变:a=%d",a); return 0; }
相关文章推荐
- C++标准库中的list的实现原理
- 01-C++11的使用
- C语言基础-指针
- C++基础::类设计的几大原则
- C++中指针和引用的区别(超详细)
- C++内存管理学习堆和栈
- 【c语言】 模拟实现printf,要求功能: my_printf("dc\ts\ndc\ndc\ts!", ...)
- c/c++之模板方法实现归并排序
- 黑马程序员--C语言基础--基本运算
- c++程序的内存格局
- C++笔记(二)------ 头文件
- 浅谈C++多态性
- C/C++ 中的0长数组(柔性数组)
- C++ enum
- c语言中float、double的区别和用string定义字符串反置
- Eclipse配置c/c++编程环境,完整教程+附样例
- 0生1,1生C,C生万物
- 黑马程序员——C语言基础02—数据类型
- C++面试题与答案
- C++ ASCII 码的一些问题