指针

——>指针变量
类型名 *变量名
int *point1; char *point2; 注意:*p可以直接使用,它代表指针p指向的变量,*p可以当做被指向的变量使用!~~~~ 一个变量的地址 成为这个变量的指针。 ——>数组元素的指针
定义:数组元素的地址
定义数组 一维数组 int p[] = {,,,};
二维数组 char k[][] = {
{'a','b','c'},
{'k','c','s'’},
{'j','w','z'}
}; 数组元素的指针
int *s = &p[];//指针变量s,指向数组p的0号元素,作用将p数组的首元素的地址赋值给指针变量s(不是*s哦)。
int *s = p;//意义同上 ,指向数组的0号元素
在引用数组元素时 指针的运算?? 指针也能运算。。
定义说明:如果指针变量指向数组中的一个元素,则p+1指向通数组中下一个元素,p-1指向通数组中的上个元素。
例如 int *s = p;//即为s指向p的0号元素p[0],p++则指向p[1];
引用数组方法
int a[] = {,,,};
int *p = a;
> 下标法 a[i]
> 指针法 *(a+i)或*(p+i) //a数组名称,p指向数组元素的指针变量。 指针引用多维数组
多维数组 int a[][] = {{,,,},{,,,},{,,,}};
c语言规定数组名代表数组首元素的地址。
ps:so数组名“a”代表数组多维数组a首元素的地址,即为“”== &a[][]的地址、
a[]+ =*(a+)+=&a[][];a[]+ =&a[][]; ——>字符串 字符指针 定义字符串 char string[] = “i love you”;//通过数组定义字符串
char *string = “i love you”; //通过指针变量定义字符串 ps:C语言中只有字符变量 没有字符串变量,
所以“字符指针变量string”指向的是第一个元素的地址即为i的地址,绝对不是整个字符串的地址。
只能说把i love you 的第一个字符额地址付给指针变量string 字符串输出
字符串输出原理、printf原理
printf 输出字符 s% 输出过程:给出变量名称string,则系统输出string指向的字符串第一个字符,然后自动使string加1,使之指向下一个字符,在输出该字符.....如此知道遇到字符串结束标志’\’为止。 表示字符串元素
char a[] = “i am a student”;
a[i] == *(a+i) a[] = *(a+) = i //前者下标法,后者地址法
表示数组元素的方法!~ 字符数组 指针 内存表示
字符数组:若干字符元素组成。
字符指针:指向字符串第一个元素(字符)的地址。
内存分析:编译时 为字符数组分配若干存储单元,以存放各个元素,
编译时 为字符指针分配一个存储单元(visual c++ 指针变量分配4个字节) ——>指向函数的指针 1函数指针定义:定义函数 编译时 系统为函数分配存储空间,这段存储空间的起始地址(入口地址)成为函数的指针。
例如
int (*p)(int ,int)//形式为: 类型名(*指针变量名)(函数参数表列)
定义指向函数的指针变量p,指向的函数返回值为整型且有两个整型的参数,(*p)表示指针变量P
p的类型用int(*)(int,int)表示 int test2 (int, int);
int (*p) (int, int); //定义函数指针
p = test2; //p指向test2函数,将test2的入口地址赋值给指针变量p
int c = (*p)(,); //通过指针变量调用test函数 NSLog(@"%d",c); //打印
—————————————————————————————————————————————————————
int (*p) (int, int);//定义函数指针
p = test2(, );//错误写法!!!!这尼玛 是将函数值赋值给指针变量P。
printf(“%d”,p);//打印 指针函数p+n p++ p—-等运算时无意义的... 指向函数的指针作为函数参数 复制代码
例题:当k分别为1、、 则求a+b的不同计算结果
void main()
{
int max(int a,int b);
int min(int a,int b);
int add(int a,int b);
int x ,y,k;
x = ;
y = ;
k = ;
NSLog(@"--->%d",k); if (k ==) {
int c = fun(x,y,max);
printf("===>%d",c);
}else if(k == ){
int c = fun(x,y,min);
printf("===>%d",c);
}else if(k == ){
int c = fun(x,y,add);
printf("===>%d",c);
}
//参数为 函数指针
int fun(int sum1,int sum2,int (*p)(int a ,int b))
{
return (*p)(sum1,sum2);
}
//求最大值
int max(int a,int b)
{ return MAX(a, b);
}
//求最小值
int min(int a,int b)
{
return MIN(a, b);
}
//求和
int add(int a,int b)
{
return a+b;
}
复制代码 返回指针值得函数
int *p(int a,int b);//定义函数:函数名为p,返回值为“int *”的指针,形参为两个int型的函数p
定义返回指针的函数:基本形式:类型名* 函数名(参数表列)
对比int (*p)(int a,int b);这里是定义一个指针函数 —>指针数组
定义:数组中所有元素都为指针
类型名 *数组名[数组长度];
int *p[]; 意味:数组中元素为int*类型,指向整型变量的指针
char *name[] = {“Follow me”,”Basic”,”Great Wall”,”Computer design”};
//定义指针数组,分别指向四个字符串 指针小结:
区别指针 指针变量。
指针就是个地址;指针变量是一个存放地址的变量
指向: 谁把地址存放到指针变量中,就说指针变量指向谁。

C语言 指针小结的更多相关文章

  1. C语言指针-小结

    1) 指针变量可以进行加减运算,但是指针变量的加减运算并不是加上或减去一个数,而是跟指针指向的数据类型有关,数据类型在系统中占了多少个字节,指针+1后就向后移动了多少个字节. 2) int *poin ...

  2. C语言指针转换为intptr_t类型

    1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...

  3. [转]C语言指针学习经验总结浅谈

    指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...

  4. 不可或缺 Windows Native (7) - C 语言: 指针

    [源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...

  5. C语言指针学习

    C语言学过好久了,对于其中的指针却没有非常明确的认识,趁着有机会来好好学习一下,总结一下学过的知识,知识来自C语言指针详解一文 一:指针的概念 指针是一个特殊的变量,里面存储的数值是内存里的一个地址. ...

  6. (转载)c语言指针学习

    前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...

  7. 关于C语言指针的问题

    在学习关于C语言指针的时候,发现这样一个问题,代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h&g ...

  8. C语言指针类型 强制转换

    关于C语言指针类型 强制转换  引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...

  9. C语言指针和数组知识总结(上)

    C语言指针和数组知识总结(上) 一.指针的基础 1.C语言中,变量的值能够通过指针来改变,打印指针的语句符号可以是:  %08x 2.指针的本质 指针的本质就是变量,那么既然是变量,那么一定会分配地址 ...

随机推荐

  1. Oracle XE手动建立数据库实例

    参考资料为: [Oracle XE系列之三]使用OMF方式手工创建Oracle XE数据库 - 王立夫 - 博客园http://www.cnblogs.com/opfo/p/5056122.html ...

  2. 使用Xmanager访问CentOS远程桌面

    最近在搞Qemu虚拟机相关的项目,需要用到Linux的桌面系统,用Xmanager连接CentOS桌面最方便了. Linux端:CentOS release 6.8 (Final) Windows端: ...

  3. 【原】小玩node+express爬虫-1

    最近开始重新学习node.js,之前学的都忘了.所以准备重新学一下,那么,先从一个简单的爬虫开始吧. 什么是爬虫 百度百科的解释: 爬虫即网络爬虫,是一种自动获取网页内容的程序.是搜索引擎的重要组成部 ...

  4. Python OOP(面向对象编程)

    一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...

  5. webapi-test

  6. 2014年---移动端webapp个人年度总结

    我今年是由零基础开始入门的,刚好我第一家公司入职后就马上让我接手做ipad版的专题app了.(一入门就是移动端开发,是幸运也是艰辛的开始). 我是自学前端的,当然,对Bootstrap,JQuery  ...

  7. [老文章搬家] [翻译] 深入解析win32 crt 调试堆

    09 年翻译的东西. 原文见:  http://www.nobugs.org/developer/win32/debug_crt_heap.html 在DeviceStudio的Debug编译模式下, ...

  8. C++中有关数组的相关问题

    1.数组长度相关: strlen(from <string.h>)只是针对字符数组才有的,他不包含\0的长度.无法对其他类型求长度.sizeof()则可以对\0发起作用.记住(a.leng ...

  9. cookie (储存在用户本地终端上的数据)

    Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).定义于 RFC2109 和 2965 中的都已废弃 ...

  10. 【转】linux查看及修改文件权限以及相关

    linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有 ...