watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenVveW91MTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenVveW91MTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenVveW91MTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenVveW91MTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenVveW91MTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

#import <Foundation/Foundation.h>
//交换函数
void swap(int x, int y)
{
printf("x=%d,y=%d",x,y);
int temp = 0;
temp = x;
x = y;
y = temp;
printf("x=%d,y=%d",x,y); } //
void swap2(int *x , int *y)
{
//不改地址,改地址相应的值
printf("x=%d,y=%d",*x,*y);
int temp = 0;
temp = *x;
*x = *y;
*y = temp;
printf("x=%d,y=%d",*x,*y);
} int main(int argc, const char * argv[])
{ //C语言定义指针的时候,喜欢使用p,q,r等;
//类型是int*
//变量名p
//初值NULL恒等于0
// int *p = NULL;
// //打印指针%p
// printf("%p %lu\n",p,sizeof(p));
//
// char *q = 0*1000;
// printf("%p %lu\n ",q,sizeof(q)); #pragma mark---------指针总结
//我们通常所说的指针,指的是指针变量,
//指针变量是存放, 内存地址 (内存编号)的变量. //32位,8个0或1表示每8位一个字节
//指针占用的内存都一样,指针变量占用的内存不一样 //p和q所占内存一样,由于都是32或64位系统下的首地址,都占那么多,而int,char决定长度不一样,int占四间房,char就占1间房 //取地址符,是知道int a = 3,a值是3, int *P想指向内存中a = 3,这时候有了取地址符&a,就是a的首地址,
// int a = 3;
// int *p = &a;
// printf("p=%p\n",p);
// printf("&a=%p\n",&a);
//// printf("%d",*p);
//
// char b = 'a';
// char *q = &b;
// printf("%p %lu\n",q,sizeof(q));
//整型等于整型地址,字符型等于字符型地址
//没有谁是猜的地址,&取地址符,去整型,就是整型指针.... //*p 取值符 地址里存放的内容
//取多少字节取决于类型修饰符
// printf("%d \n",*p);//*p 取值运算符 用于获取 指针相应的值
// printf("%d %c\n",*p,*q); //获取地址两种途径
//第一,直接给地址
//第二,用取值符号&来取
#pragma mark-------------指针变量的赋值,代表指针变量的重指向
//指针变量指向
//指针变量的赋值,代表指针变量的重指向
//注意
//不要让整型指向字符型
//也不要让字符型指向整型
// p = &b;错误 // int a = 10;
// int *p = &a;
// printf("指针p存放的地址: %p 指针p占用的内存空间大小:%lu 这个内存空间里存放的值: %d\n",p,sizeof(p),*p);
// //p自己也占内存
// //它们都放在栈区,一个一个分配内存
// printf("p自己的地址: %p\n",&p);
// int b = 20;
// p = &b;
// printf("指针p保存的新地址:%p 新的内存空间里存放的值 %d\n",p,*p); #pragma mark-------------指针的算术运算
//唯独加减运算
//int * p = &a;
//P++;向高位移动四个字节
//p--;向低位移动4个字节 //p每加一代表加了这么大类型
//p++//向高位移动四个字节
//p+1//没有变
//*(p++)
//*(p+1) //int * p = &a;只告诉编辑器 p是一个指针 //*p = 20;操作符,取地址相应的值 //p 指针(地址) *p取值 &p地址 &(*P)地址 #pragma mark-------------数组与指针
// int arr[5]={9,2,3,4,5};
// printf("%p\n",arr);
// printf("%p\n",&arr[0]);
// int *p = arr;
// printf("%d\n",*p);
// printf("%d\n",*(p+1));
// printf("---%d\n",p[1]);
// arr[1]=8;//直接改值
// *(p+1)=7;//间接改值
// printf("%d\n",*(p+1));
#pragma mark-------------数组去*号加[]原则,把数字扩出来
// printf("%d\n",*(p+1));
// printf("%d\n",p[1]); //p[2] *(p+2) arr[2]
// p=arr+3;//指针变量是变量,能够重指向(赋值)
//arr = p;数组名是一个常量指针,不能够改变赋值. //通过数组元素求数组元素个数,sizeof(a)/4 // short a[4]={3,7,9,1};
// int *p1 = a;
// char *p2 = a;
// printf("%d",*p1);
// printf("%d",*p2); #pragma mark-------------字符串与指针
//能够操作单个字符, *(p+2)='z';
//也能够操作整个字符串 printf("%s",(p+2));
// char str[]="iPhone";
// char* p = str;
// *(p+2)='z';
// printf("%s",(p+2));
#pragma mark-------------指针数组
//存放指针的数组是指针数组
//常量区
//栈区.拷贝常量区 // char *p1 = "iPhone";
// char *p2 = "Android";
// char *p3 = "win8";
// char *strings[3]={p1,p2,p3}; // char *strings[3]={"iphone","Android","win8"};
//操作整个字符串
//打印指针数组(指针字符串)
// for (int i = 0; i<3; i++) {
// printf("%s ",strings[i]);
// }
// printf("%s,%s,%s",strings[0],strings[1],strings[2]);
//操作单个字符串
// *(strings[1]+4) = 'x';//指向常量,不能赋值
// char c = *(strings[1]+4);
// printf("\n %c",*(strings[1]+4));
// printf("\n %c",strings[1][4]);
// #pragma mark-------------指针与函数
//改变不了值,由于是你压根没有改变a,b,而是改变它的副本x,y
int a = 10,b = 20;
// swap(a, b);
// printf("%d,%d",a,b);
// int *p = &a;
// int *q = &b;
// swap2(p, q);
//不改地址,改地址相应的值
swap2(&a, &b);
printf("a=%d,b=%d",a,b);
//学好指针,须要多绘图 return 0;
}

C语言--指针(一)的更多相关文章

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

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

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

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

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

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

  4. C语言指针学习

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

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

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

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

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

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

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

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

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

  9. C语言指针操作

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/pointer-manipulation. ...

  10. C语言指针声明探秘

    C语言指针声明探秘

随机推荐

  1. 使用Aliyun Docker 容器镜像/注册表服务

    1.前往阿里云容器镜像服务创建相关资源. 2.登录你的仓库,账户名+公共地址 docker login --username=xxxxxxxxx@aliyun.com registry.cn-hang ...

  2. LeetCode Weekly Contest 22

    1. 532. K-diff Pairs in an Array 分析:由于要唯一,所以要去重,考虑k=0,时候,相同的数字需要个数大于1,所以,先用map统计个数,对于k=0,特判,对于其他的,遍历 ...

  3. 如果碰到git提示“ignored tracked with git”,那么使用以下命令解决

    命令:git rm --cached -r 文件/文件夹 问题在初始化git仓库的时候没有创建.gitignore文件来过滤不必要提交的文件, 后来却发现某些文件不需要提交, 但是这些文件已经被提交了 ...

  4. 带中横线的日期格式在iOS手机系统上 转换时间戳NaN问题

    类似于 '2019-04-01 14:13:00' 这样的日期格式转换时间戳在iOS手机上是无法转换的,需要先处理日期格式成 '2019/04/01 14:13:00' var str = '2019 ...

  5. delphi 用idhttp做web页面数据抓取 注意事项

    这里不讨论webbrowse方式了 .直接采用indy的 idhttp  Get post 可以很方便的获取网页数据. 但如果要抓取大量数据 程序稳定运行不崩溃就不那么容易了.这几年也做了不少类似工具 ...

  6. art-template简单使用

    art-template是一款较通用的前端模板引擎. 简单的使用方法如下: 具备3个要素 1)模板 <script type="text/template" id=" ...

  7. JavaScript实现数字时钟功能

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  8. mysqldump+mydumper+xtrabackup备份原理流程

    mysqldump备份原理 备份的基本流程如下: 1.调用FTWRL(flush tables with read lock),全局禁止读写 2.开启快照读,获取此时的快照(仅对innodb表起作用) ...

  9. Ruby. Vs . Python

    前言:从语言的本质上来分析,我对Ruby持反对态度,毕竟语言是为了交流,在表达的效率层面为了正确性必须适当放弃复杂性.且有句老话说的好,Ruby In Rails 才是语言,而Ruby只是这个语言的工 ...

  10. python入门基础知识

    1.python环境的安装 python2 python3 安装后添加环境变量 2.编码 最早编码ASCII码,主要有英文,数字,字符.一字节(byte),八位(bit),代表一个字符 unicode ...