指针
指针的重要性
表示一些复杂的数据结构
快速的传递数据,减少了内存的耗用
使函数返回一个以上的值
能够直接的对硬件所访问。
总结: 指针是C语言的灵魂
附注:
*的含义:
1.乘法
2.定义指针变量
int * p
//定义了一个名字叫P的变量,int *表示P只能存放int变量的地址
3.指针运输符
该运算符放在已经定义好的指针变量的前面
如果p是一个已经定义好的指针变量
则 *p表示以P的内容地址的变量
如何通过被调用函数修改主函数普通变量的值
注意 *p 与 * p的区别。
是变量都会有地址的。
既然P是内存地址 ,而 *p就是内存地址的变量。
声明一般不使用形参
第八章: 善于利用指针
在定义指针变量时要注意如下问题:
1.
指针变量前面的“*”表示该变量的类型为指针型变量。指针变量名为 a ,b而不是 *a *b
2.
指针变量只能存储地址(指针)不要将一个整数赋给一个指针变量。
int * a = 88; //这样是不可法的
解答:
原意是:将地址 88赋给指针变量a 但是系统没法去辨别它是否是地址,从形式来看100是整型。而整型只能赋给整型变量,而不能赋给指针变量/。所以是错误的!
怎么样去引用指针变量
1.给指针变量直接的赋值
p = &a;
- /*
- 通过指针变量来访问整型变量的。
- */
- #include <stdio.h>
- int main(void)
- {
- int a = 3;
- int b = 5;
- int * aa; //指针变量 int * 变量名字为:aa
- int * bb; //指针变量int *
- double c = 3.13;
- bb = &c;
- printf("%d\n",*bb);
- aa = &a;
- bb = &b;
- printf("a==%d,b==%d\n",a,b);
- printf("aa==%d,bb==%d\n",*aa,*bb); //*aa表示aa所指向的变量输出来。
- // 3 and 5
- return 0;
- }
- /*
- 注意文中出现的两个地方:
- 前面两个 (* aa * bb )
- 表示定义了两个不同的指针变量
- 它们前面的只是表示该变量是指针的变量
- 而程序最后面的两个是指:
- *aa :表示指针变量*aa所指向的这个变量
- */
2.引用指针变量指向的变量
如果已经执行力 p = &a 即指针变量P指向了整型变量a的地址
printf("%d\n",*p);
就是把引用指针变量所指向的变量输出来。 int 变量 int * p 指针变量
作用:其作用就是与整数形式输出指针变量P所指向的变量的值。也就是把a变量里面的内容输出来。
如果有如下语句
*p = 1;
表示讲 1 赋值给p当前所指向的变量,如果p指向了a的,则相当于1赋值给了a,则a = 1;
引用指针变量的值,如:
printf("%o\n",p);
作用就是:
以八进制数形式输出变量p的值,变量p的值如果是指向了a,那么就会把a的地址值输出来则 &a
有两个运算符号:
1.指针运算符(间接访问运算符) * p
2.取地址运输符 &a
不浪费时间,努力的去学习。
转载于:https://blog.51cto.com/wangweihao/884261