c語言指針運算
⑴ 在c語言中,可以通過哪三種運算來移動指針
對指針變數加一個整型常量 , 指針賦值 , 對指針變數減去一個整型常量
⑵ C語言指針變數運算
目前只有和整型的加減貌似可執行,是不是太奇葩了?
一點也不是,因為只需要加減運算
int
*p=(int
*)0xA00000000;
int
*p1=p+10;
int
x;
下面是指針可以進行的運算。
p-x;//指針
p+x;//指針
p--;//指針
p++;//指針
++p;//指針
--p;//指針
!p;
//
整數或bool
p-p1;//整數個數
p+10;//指針
p-10;//指針
指針不需要其他運算!!!!!
難道你是想這樣做!
p+=(p-p1)*200;
p-=(p-p1)/200;
p=(int
*)((int)p/20);
⑶ C語言中指針的算術運算有什麼特點
基本上沒有區別,c++僅僅只是在c語言的基礎上增加了面向對象的概念,所有它又被稱為是「帶類的c」,因此,c++在指針操作上增加了指向對象的指針(引用);但究其本質而言,指針仍然是內存中的地址,這一點沒有改變.
⑷ 在C語言中"指針與指針的運算"是什麼格式的
指針變數同普通變數一樣,使用之前不僅要定義說明,而且必須賦予具體的值。未經賦值的指針變數不能使用,否則將造成系統混亂,甚至死機。指針變數的賦值只能賦予地址,決不能賦予任何其它數據,否則將引起錯誤。在C語言中,變數的地址是由編譯系統分配的,對用戶完全透明,用戶不知道變數的具體地址。
兩個有關的運算符:
1)
&:取地址運算符。
2)
*:指針運算符(或稱「間接訪問」
運算符)。
⑸ C語言指針的用法
1、指針的概念
指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針所指向的類型,指針的值或者叫指針所指向的內存區,還有指針本身所佔據的內存區。讓我們分別說明。
先聲明幾個指針放著做例子:
例一:
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int(*ptr)[3];
(5)int*(*ptr)[4];
1、指針的類型
從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的類型:
(1)int*ptr;
//指針的類型是int*
(2)char*ptr;
//指針的類型是char*
(3)int**ptr;
//指針的類型是int**
(4)int(*ptr)[3];
//指針的類型是int(*)[3]
(5)int*(*ptr)[4];
//指針的類型是int*(*)[4]
怎麼樣?找出指針的類型的方法是不是很簡單?
2、指針所指向的類型
當你通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯器將把那片內存區里的內容當做什麼來看待。
從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針所指向的類型。例如:
(1)int*ptr;
//指針所指向的類型是int
(2)char*ptr;
//指針所指向的的類型是char
(3)int**ptr;
//指針所指向的的類型是int*
(4)int(*ptr)[3];
//指針所指向的的類型是int()[3]
(5)int*(*ptr)[4];
//指針所指向的的類型是int*()[4]
在指針的算術運算中,指針所指向的類型有很大的作用。指針的類型(即指針本身的類型)和指針所指向的類型是兩個概念。當你對C越來越熟悉時,你會發現,把與指針攪和在一起的"類型"這個概念分成"指針的類型"和"指針所指向的類型"兩個概念,是精通指針的關鍵點之一。
本篇文章來源於 黑基網-中國最大的網路安全站點 原文鏈接:http://www.hackbase.com/lib/2008-03-09/13993.html
⑹ c語言指針用法
1、使用場景
使用指針時,必須將它指向一個變數的地址或者為它分配空間方能使用,如下所示:
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int a[5]={0,1,2,3,4};
int *b,*d;
int c=2;
int *e=a; //e指向a數組首地址
//*b=2; 無法直接初始化
//printf("%d ", *b);
e=e+2; //移動兩個地址單元
d=&c; //d指向c的地址來表示值
c=4; //修改原c變數的值,d指針的值會發生改變
b=(int *)malloc(sizeof(int));//為b分配一個int型空間來直接存儲值
*b=2;//分配空間後可以直接賦值了
printf("this is e,b,c,d :%d %d %d %d ",*e,*b,c,*d);
2、類型說明
(1)int *a :表示一個指向int型變數的指針,指向的是變數的地址單元
(2)char *b:表示一個指向char變數的指針
*a表示的是這個指針指向地址的值,a為此指針本身的地址,這點要明確,一般用*(a+1)、*(a+2)來表示值,如:
int nums[5]={0,1,2,3,4};
int *a=nums;
printf("%d %d %p ",*a,*(a+1),a);
(6)c語言指針運算擴展閱讀:
指針的運算
指針指向變數地址,若原變數的內容發生了變化,它本身也會發生變化,指針之間的運算一般為值運算和地址運算
(1)值運算:直接通過*運算方式,像a+*(a+1),結果為第一個元素與第二個元素相加。
int nums[5]={0,1,2,3,4};
int *a=nums;
(2)地址運算:通過a+i的方式.指針會指向a的下i個地址。
int nums[5]={0,1,2,3,4};
int *a=nums;
a=a+2;
printf("%d ",*a);
結果輸出2。