c指针点滴三(指针运算)

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 void main3()
 5 {
 6     int num = 89;
 7     int *p = &num;
 8     p++;//不可预测的值 指针++就是按照指针的类型大小前进一个类型的大小
 9     //如果是int就前进4个
10     printf("%d",*p);//指针++只有在数组才有意义
11 }
12
13 //void main4()
14 //{
15 //    int a[5];
16 //    int i = 0;
17 //    printf("%p",a);
18 //
19 //    for(int *p=a;p<a+5;p++)//切记 指针++  是移动sizeof指针类型的字节
20 //    {
21 //        *p = i;//对指针指向的值赋值
22 //        i++;
23 //    }
24 //    system("pause");
25 //}
26
27 void main5()
28 {
29     int a[5] = {1,2,3,4,5};
30     int *p5 = &a[2];
31     printf("%d",a[2]);
32     p5 = p5+ 2;//相当于在数组内部向后移动两个元素的大小
33
34     //double *p = 0x300400
35     //p = p+2 0x300416
36     printf("\n%d",*p5);//5 &a[4]
37     getchar();
38 }
39
40 void main6()
41 {
42     double num = 10;
43     double *p = &num;
44     p  = p-465436;//指针的加减法只能在数组有意义 而且容易越界
45                 //一个exe不能读写其他exe
46     printf("%f",*p);
47 }
48     
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 //判断两个指针是否相等 就看是否指向同一个地址
 5 void main()
 6 {
 7     int num = 32;
 8     int *p = &num;
 9     int *p1 = &num;
10     if(p1==p2)
11     {
12         printf("指向同一个女人是情敌");
13     }else
14     {
15         printf("不是情敌了");
16     }
17 }
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 //指针的赋值运算 一般就是传递地址
 5 //根据地址改变内容
 6 void main4()
 7 {
 8     int num = 10;
 9     int *p = &num;
10     printf("\n%p,%p",p,&num);//一样
11
12     *p = 4;
13     printf("\n%d",num);
14
15     int *px = p;
16     *px = 3;
17     printf("\n%d",num);//同样等价操作num
18
19     system("pause");
20 }
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void main4()
 4 {
 5     int a[10]={1,2,3,4,5,6,7,8,9,0};
 6     int i;
 7     printf("\n%d",*(a+4));//5 &a[4]
 8
 9     getchar();
10
11 }
12 void main3()
13 {
14     int a[10]={1,2,3,4,5,6,7,8,9,0};
15     int i;
16     printf("%x",a);//被编译器为首地址
17
18     //此处断电查看数组元素
19     for(i=0;i<10;i++)
20     {
21         printf("\n%d,%d",a[i],*(a+i));
22         printf("%x,%x",&a[i],a+i);//等价关系
23     }
24
25     //指针遍历
26     for(int *p=a;p<a+10;p++)
27     {
28         *p = *p - 1;
29         printf("\n%d,%x",*p,p);
30     }
31     getchar();
32 }
33 void main2()
34 {
35     int num = 10;
36     int *p1 = &num;//地址的赋值
37     int *p2 = p1;//指针的赋值
38
39     *p2 = 3;
40     printf("%d,%d,%d",num,*p1,*p2);//全是3
41 }
42 void main1()
43 {
44     int num = 10;
45     //int *p = a;
46     //*p = a;//整数和指针最好不要直接运算 c只是警告 但是c++一定报错
47
48 }
时间: 2024-10-20 11:48:02

c指针点滴三(指针运算)的相关文章

二级指针的三种内存模型

第一种内存模型: /* Module: 二级指针第一种内存模型.cpp Notices: Copyright (c) 2017 Landy Tan */ #include <iostream> using namespace std; ///////////////////////////////////////////////// #define SIZE(a) sizeof(a) / sizeof(a[0]) int SortArray(char **pArray, int nLen);

const 指针的三种使用方式

///////////////////////const 指针的三种状态///////////////////// 注意:const 的前后顺序 const 在类型之前 ---可以修改指针包含的地址,不能修改指针指向的值 const 在变量之前类型之后 ---可以修改指针的指向值,不能修改指针地址 // 1.指针指向的数据为常量,不能修改,但是可以修改指针包含的地址 /*int HoursInDay = 24;const int* pInteger = &HoursInDay; cout<&

指针变量的加运算

a++,表示将a的值增加1,但是这里返回的值还是加1前的数 ++a类似,只是返回的值是加1后的数 a+1只是返回a的值加1后的结果,a的值本身不变指针变量的加运算

[leetcode]75.Sort Color三指针

import java.util.Arrays; /** * Given an array with n objects colored red,white or blue, * sort them so that objects of the same color are adjacent, * with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to repr

Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值

Android For JNI(三)--C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值 C中比较难的这一块,大概就是指针了,所以大家还是多翻阅一下资料,当然,如果只是想了解一下,看本篇也就够了,不过我也尽量陈述的很详细 一.指针 要说指针,其实通俗易懂的话来说,他应该是保存内存地址的一个变量,我们来看一下小例子 #include <stdio.h> #include <stdlib.h> main(){ //int 变量 int i ; i = 5; //打印i的值

三指针(三指针排序只有三种元素的数组)--12--三指针--颜色分类

颜色分类 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. 注意:不能使用代码库中的排序函数来解决这道题. 示例: 输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2] 题目来源:力扣(LeetCode)题目链接:https://leetcode-cn.com/problems/sort-colors 分析 题目可通过快排.三指针,

黑马程序员_ C语言基础之指针(三)

概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 1.什么是指针 2.数组和指针 3.函数指针 什么是指针 存放变量地址的变量我们称之为“指针变量”,简单的说变量p中存储的是变量a的地址,那么p就可以称为是指针变量,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对应的存储空间中拿到a的值,这种方式我们称之为“直接引用”:

C之多维数组和多维指针(三十一)

我们在之前讲到过指针的本质是变量,当然指针也就会占用一定的内存空间.我们便可以定义指针的指针来保存指针变量的地址值啦,这便是我们所说的二维指针啦. 那么为什么需要指向指针的指针呢?指针的本质便是变量,对于指针也同样存在传值调用和传址调用.我们来看看一个示例代码,代码如下 #include <stdio.h> #include <malloc.h> int reset(char**p, int size, int new_size) {     int ret = 1;     in

黑马程序员---C基础9【字符串的输入输出】【字符串相关函数】【指针】【指针变量初始】【二级指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [字符串的输入输出] 1.字符串输出: %s-------从给定的地址开始输出字符直到遇到\0停止: printf("%s\n",&a[3]);  printf("%s\n",a); char a[]="hellowo\0rd!"; 2.字符串输入: 从键盘上接收一个字符串,保存在以a为首地址的字符数组中 scanf("%s&