一个例子看懂C语言中的++号的用法

话不多说,直接上代码:

#include<stdio.h>
int main(){
    int suzu [10] ={10,11,12,13},i;
    int *p=suzu;

    //打印出所有的数据
    for(i=0;i<10;i++) printf("%d\n",suzu[i]);

    //因为*的优先级高于+号 所以这个括号是必须要的
    printf("\n");
    //因为这个不是按照指针来读取的,所以我们会从默认第一位开始读取
    for(i=0;i<10;i++) printf("suzu[%d] values is %d\n",i,suzu[i]);   

    printf("\n");
    //如果我们想要输出地址的话我们就需要在前面加上&地址符号
    for(i=0;i<10;i++) printf("suzu[%d] values is %d\n",i,&suzu[i]);
    printf("\n");
    //同样可以看出我们在前面无限的加上*&其实对取值是没有影响的
    for(i=0;i<10;i++) printf("suzu[%d] values is %d\n",i,*&*&suzu[i]);   

    //但是我们输入的东西不能超出索引范围,否则产生未知的数据
    printf("\n");
    printf("%d\n",*(p+3));
    printf("%d\n",*(p+11));

    //++ 的区别
    printf("\n");
    printf("%d\n",p);
    *p++;                        //指针实际上向前移动了一位
    printf("%d\n",p);
    ++*p;                        //对指针移动到的第一位执行++操作
    printf("%d\n",p);
    ++(*p);                        //对指针移动到的第一位执行++操作
    printf("%d\n",p);
    *p=*p+1;                    //对指针移动到的第一位执行++操作
    printf("%d\n",p);
    //11+3

    //这两种写法其实没有本质上的区别
    for(i=0;i<10;i++) printf("a[%d] values is %d\n",i,*(p+i));
        printf("\n");
    for(i=0;i<10;i++) printf("a[%d] values is %d\n",i,*(suzu+i));

    return 0;
}

总结:一般来说

*p++;    //会对指针所指向的内存地址产生影响

其余的几种写法会对指针当前所指向的内存地址中存储的值产生影响

减号也是同理

原文地址:https://www.cnblogs.com/gddcz/p/11594413.html

时间: 2024-10-02 04:49:56

一个例子看懂C语言中的++号的用法的相关文章

一个例子看懂socket

一个服务端与多个客户端交互的例子 package j2se.socket; import java.io.*; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; /**  * Created by jingqing.zhou on 2015/6/17.  * 基于tcp协议的socket通信,实现用户登录  * 服务器端  */ public class server {     

一个例子看懂异步代码执行效率

异步代码采用线程池,提供代码执行的并行性,不阻塞当前线程,实例代码,模拟三个耗时操作,分别耗时为1000.1500.1800ms,提供同步与异步的实现方式,Main中以同步异步的方式执行,对比执行时间,同步执行方式为各个方法的执行时间总和,而异步执行方式为最长的那个时间.ps:实际执行情况可能有其他的一些微不足道开销,但大体能反应异步的执行效率. class OutHelper { public DateTime Method1() { Thread.Sleep(1000); return Da

一个例子看懂神马是闭包

闭包就是这个玩意儿.怎么用在此不做多讲.就告诉大家闭包长神马样子. <!DOCTYPE html> <html> <head> <title>神马JS闭包</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script> function wenyi(){ var i=0; ret

一个例子搞懂C语言的局部变量与全局变量

#include <stdio.h> int x = 77; /*全局变量x*/ void fn1() { extern int y; /*使用外部全局变量y,如果不加extern编译不通过*/ printf("fn1(): x=%d,y=%d\n",x,y);  //x=77,y=88; } void fn2() { extern int y; /*使用外部全局变量y,如果不加extern编译不通过*/ y=888; /*修改外部全局变量y为888*/ printf(&q

用一个例子读懂 RequireJS

用一个例子读懂 RequireJS 例子来自官方,我稍微改造了一下,如下: // project.html <!DOCTYPE html> <html>     <head>         <title>requirejs</title>         <!-- data-main attribute tells require.js to load              scripts/main.js after require.

C语言中一些乱七八糟的用法与细节(不断更新)

用C语言比较多,这篇是平时攒下的.有些内容在工作后可能会很常见,但是不用容易忘,所以就写篇博客吧. 一.printf的用法 %*可以用来跳过字符,可以用于未知缩进.像下面一样. for(i = 1; i < 10; i++) { printf("%*c\r%*c\n",  9 - abs(i - 5), '*', abs(i - 5) + 1, '*'); } %[]可以用来读取指定的内容,%[^]可以用来忽略指定内容(正则表达式?) %m可以不带参数,输出产生的错误信息 二.关

走近比特币:一个故事看懂“区块链”

区块链是比特币的底层技术和基础架构,本质上是一个去中心化的数据库.区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)并生成下一个区块. 狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一 种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本. 以上定义摘自百度百科.很多菜鸟朋友看完这段解释依然满脸懵逼,到底什么是“区块链”? 起因 除非你完全没有接触过信息安全,否则一定听说过比特币和区块链

关于类、方法、对象(实例):通过一个例子看一下self都做了哪些事情

我们在定义一个类时,经常会在类的各个方法中看到self,那么在程序执行时self到底起了什么作用,什么时候要加self,这一点需要我们思考并好好理解.之前在学习时没有想这么多,加之用pycharm写代码,很多地方都自动补全了,有些地方没加self,会提示错误,然后补全,没有想过这个过程,今天刚好整理一下. 1.先简单说明一下self的含义 类的方法与普通的函数只有一个特别的区别 -- 它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值, Python 会提供这个值.这

看懂架构设计中的服务隔离

前言 我们在做系统架构设计的时候,经常离不开的一个话题就是进行服务的隔离设计. 那什么是「服务隔离」呢? 顾名思义,它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖.当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务. 其实隔离设计并非软件行业独创,它是借鉴于造船行业.行业有一个专业术语叫做「舱壁隔离」.利用舱壁将不同的船舱隔离起来,如果某一个船舱进了水,那么就可以立即封闭舱门,形成舱壁隔离,只损失那一个船舱,其他船