黑马程序员——C语言指针
2014-05-18 22:31
92 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
今天看了李明杰老师的C语言基础部分,当然自己感觉也是最难的部分,也就是指针。
首先呢,要明白指针储存的是一个变量的地址。说白了指针就是一个地址(乱说的。。。)
下面是一段很经典的利用指针对函数进行操作来交换两个数的代码
还有一个很难理解的就是在定义指针之后,在使用他的时候就不能在后面加*号了,加*号的意思是调用指针储存的地址空间的值。
such as:int *p;int a=0; p=&a;那么*p就是调用p指针储存的地址空间的值,也就是a的值为0。
下面一段代码也是很经典的用一个函数返回两个值
这也就是通过指针实现的功能,通过指针将一个变量传入函数,然后改变这个指针储存的地址空间的值。
上面这段代码是李明杰老师写的,很清晰的讲明了什么是指针。
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
今天看了李明杰老师的C语言基础部分,当然自己感觉也是最难的部分,也就是指针。
首先呢,要明白指针储存的是一个变量的地址。说白了指针就是一个地址(乱说的。。。)
下面是一段很经典的利用指针对函数进行操作来交换两个数的代码
#include <stdio.h> //void swap(char v1, char v2) { // printf("交换之前之前:v1=%d,v2=%d\n", v1, v2); // // char temp; // // temp = v1; // v1 = v2; // v2 = temp; // // printf("调用函数之后:v1=%d,v2=%d\n", v1, v2); //} void swap(char *v1, char *v2) { char temp; temp = *v1; *v1 = *v2; *v2 = temp; } int main(int argc, const char * argv[]) { char a = 10; char b = 9; printf("调用函数之前:a=%d,b=%d\n", a, b); swap(&a, &b); printf("调用函数之后:a=%d,b=%d\n", a, b); return 0; }定义一个指针使用的方式就是 类型 *变量名 such as :int *p;意思就是定义一个int类型的指针变量。
还有一个很难理解的就是在定义指针之后,在使用他的时候就不能在后面加*号了,加*号的意思是调用指针储存的地址空间的值。
such as:int *p;int a=0; p=&a;那么*p就是调用p指针储存的地址空间的值,也就是a的值为0。
下面一段代码也是很经典的用一个函数返回两个值
#include <stdio.h> int sumAndMinus(int v1, int v2, int *p) { *p = v1 - v2; return v1 + v2; } int main(int argc, const char * argv[]) { int a = 10; int b = 4; // 接收a跟b的和 int sum; // 接收a跟b的差 int minus; sum = sumAndMinus(a, b, &minus); printf("sum=%d, mimus=%d", sum, minus); return 0; }
这也就是通过指针实现的功能,通过指针将一个变量传入函数,然后改变这个指针储存的地址空间的值。
#include <stdio.h> void test() { char a; // a = 10; 直接引用 // 定义了一个指针变量b,而且b只能指向char类型的变量 char *b; // 让指针变量b指向a b = &a; // 这里的*b代表:访问b值对应的存储空间(也就是变量a的存储空间) // 相当于a = 10; *b = 10; printf("%d\n", a); a = 11; // 这里的*b相当于取出变量a存储的值 printf("%d\n", *b); } void test1() { char a = 10; char *b = &a; /* 相当于下面两句 char *b; b = &a; */ } void test2() { // 这是错误的做法 char *p; // 应该在指针确定指向的变量后,再进行相应的操作 *p = 10; } void test3() { // 这个错发也是错误的 char *p; // 指针变量是用来存储变量地址的,不能随便赋值一个常数,除非你这个常熟恰好是某个变量的地址 p = 100; } int main(int argc, const char * argv[]) { return 0; }
上面这段代码是李明杰老师写的,很清晰的讲明了什么是指针。
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员-IOS笔记-C语言中的指针与数组
- 黑马程序员--C语言指针与动态内存分配
- 黑马程序员——C语言指针使用小结
- 黑马程序员——c语言学习---指针的探讨
- 黑马程序员------C语言-----指针
- 黑马程序员 C语言:指针的概念
- 黑马程序员—C语言指针的了解和使用
- 黑马程序员---iOS基础---C语言中的指针
- 黑马程序员——C语言中的指针
- 黑马程序员-IOS笔记-C语言中的字符串数组 指针
- 黑马程序员--C语言中的指针(2)
- 黑马程序员 C语言的字符数组和字符指针
- 黑马程序员之IOS学习总结——05 C语言中的指针
- 黑马程序员——c语言的复杂数据类型:指针和结构体
- 黑马程序员-IOS笔记-C语言中的指针
- 黑马程序员-c语言指针
- 黑马程序员--C语言中的指针(3)
- 黑马程序员——C语言日志——指针、地址和变量值
- 【黑马程序员】C语言字符串指针介绍及使用
- 黑马程序员—C语言笔记—指针