亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

運用指針在不用加號的情況進行加法運算的講解

 更新時間:2019年01月04日 14:46:17   作者:sdr_zd  
今天小編就為大家分享一篇關于運用指針在不用加號的情況進行加法運算的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

平常我們進行加法運算都是用類似以下的代碼進行運算

#include<stdio.h>
int main()
{
 int a=2,b=3;
 printf("%d\n",a+b);
 return 0;
}

其結(jié)果為 5,對a和b進行了加法運算

但我們?nèi)绾尾挥眉犹栠M行加法運算呢?先看一段數(shù)組運算

#include<stdio.h>
int main()
{
 int a[]={1,2};
 printf("%d\n",a[0]+a[1]);
 return 0;
}

運行結(jié)果是 3 ,它和以下這段代碼是相同的

#include<stdio.h>
int main()
{
 int a[]={1,2};
 printf("%d\n",*(a+0)+*(a+1));
 return 0;
}

因為 a[i]=*(a+i)

接下來我們簡單運用一下指針

#include<stdio.h>
int main()
{
 int a=2,b=3;
 int *p=a,*q=b;
 printf("%d\n",*p+*q);
 return 0;
}

p和q分別指向了a和b的地址,將a和b的和計算,結(jié)果是 5

現(xiàn)在運用指針和剛才說的a[i]=*(a+i)和變量存放地址進行一下結(jié)合

#include<stdio.h>
int main()
{
 int a=2,b=3;
 int *p;
 printf("%d\t%d\n",&a,&b);
 p=&a;
 printf("%d\n",(int)&((char *)a)[b]);
 return 0;
}

輸出結(jié)果是

1638212        1638208
5

前面兩個值分別是a和b的地址,因為是int類型且在我用的32位編譯器中是按四字節(jié)存儲的,然而char類型是按照一個字節(jié)一個字節(jié)存儲的,用指針p指向變量a,先看(char*)a,它是一個強制類型轉(zhuǎn)換,將a這個變量強制轉(zhuǎn)換成char*類型的地址,((char*)a)[b]則是將地址向后移b個字節(jié),但此時的((char*)a)[b]等于*(a+b),我們知道&和*的作用相互抵消的,所以有了&((char*)a)[b],但此時它的類型仍為char*,前面的(int)則是將其強制轉(zhuǎn)換位int進行輸出。

當時時候用的long定義的a和b,如果強制類型轉(zhuǎn)換為int,long是八字節(jié),而int是四字節(jié),那么就會造成數(shù)據(jù)丟失。

最后說一下剛得知的,可以用指針測試編譯器到底是64位還是32位,64位的編譯器指針變量是8字節(jié),32位的則是4字節(jié)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • C語言之快速排序算法(遞歸Hoare版)介紹

    C語言之快速排序算法(遞歸Hoare版)介紹

    大家好,本篇文章主要講的是C語言之快速排序算法(遞歸Hoare版)介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2021-12-12
  • C++命令行解析包gflags的使用教程

    C++命令行解析包gflags的使用教程

    這篇文章主要給大家介紹了關于C++命令行解析包gflags的使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • C語言玩轉(zhuǎn)指針之指針的高階玩法

    C語言玩轉(zhuǎn)指針之指針的高階玩法

    指針可以表示一個變更的地址,在計算機程序中,通常表示內(nèi)存地址,存儲數(shù)據(jù)的地址,下面這篇文章主要給大家介紹了關于C語言玩轉(zhuǎn)指針之指針的高階玩法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • C語言實現(xiàn)循環(huán)雙鏈表

    C語言實現(xiàn)循環(huán)雙鏈表

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)循環(huán)雙鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • c++ 形狀類Shape(派生出圓類Circle和矩形類Rectangle)

    c++ 形狀類Shape(派生出圓類Circle和矩形類Rectangle)

    通過C++方式,建立一個形狀類Shape作為基類,派生出圓類Circle和矩形類Rectangle 求出面積并獲取相關信息
    2020-11-11
  • 深入解析C++的WNDCLASS結(jié)構(gòu)體及其在Windows中的應用

    深入解析C++的WNDCLASS結(jié)構(gòu)體及其在Windows中的應用

    這篇文章主要介紹了C++的WNDCLASS結(jié)構(gòu)體及其在Windows中的應用,WNDCLASS被用來定義窗口,文中介紹了其諸多屬性,需要的朋友可以參考下
    2016-01-01
  • websocket++簡單使用及實例分析

    websocket++簡單使用及實例分析

    下面小編就為大家?guī)硪黄獁ebsocket++簡單使用及實例分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • C++實現(xiàn)判斷一個字符串是否為UTF8或GBK格式的方法

    C++實現(xiàn)判斷一個字符串是否為UTF8或GBK格式的方法

    這篇文章主要介紹了C++實現(xiàn)判斷一個字符串是否為UTF8或GBK格式的方法,涉及C++針對字符編碼的遍歷、判斷、編碼轉(zhuǎn)換等相關操作技巧,需要的朋友可以參考下
    2017-11-11
  • C++中jsoncpp庫和nlohmann-json庫實現(xiàn)JSON與字符串類型轉(zhuǎn)換

    C++中jsoncpp庫和nlohmann-json庫實現(xiàn)JSON與字符串類型轉(zhuǎn)換

    jsoncpp是ROS自帶的一個JSON庫,它提供了一些函數(shù)來解析和生成JSON數(shù)據(jù),在ROS中,可以使用jsoncpp庫來實現(xiàn)JSON與字符串類型之間的轉(zhuǎn)換,這篇文章主要介紹了jsoncpp庫和nlohmann-json庫實現(xiàn)JSON與字符串類型轉(zhuǎn)換,需要的朋友可以參考下
    2023-08-08
  • C/C++ 編譯器優(yōu)化介紹

    C/C++ 編譯器優(yōu)化介紹

    這篇文章主要涉及了C/C++ 編譯器優(yōu)化的簡單介紹,具有一定參考價值。如有不對之處,歡迎指出。
    2017-09-09

最新評論