#include
#include
//字元陣列
/*指標是4位元組
//指標+指標 錯誤 (指標之間相加無限大,記憶體崩潰,所以指標+指標是不可能)
//指標-指標 得到之間間隔的單元個數。1、算出間隔的位元組數,2、除以調整的權重
int main()
;//x //
可以設arr的起始位址是x
int *p = &arr[1];//x+4
指標是4個位元組,其arr[1]位元組數是x+4
int *q = &arr[9];//x+36
其arr[9]位元組數是x+36
printf("%d\n",p-q);//-8
( ( x+4)-(x+36))/4
printf("%d\n",q-p);//8
printf("%d\n",(char *)q-(char *)p);//32
字元型sizeof是1
printf("%d\n",(char ***)q-(char ***)p);//8
去掉乙個*,其是指標
printf("%d\n",(double *)q-(double *)p);//4
去掉乙個*,其型別double(8個位元組)
printf("%d\n",(short *)q-(short *)p);//16
short(2個位元組)
printf("%d\n",(int)q-(int)p);//32
其是算數運算
return 0; }
*/ */
/*//指標的算術運算+,-
int main()
*//*
int main()
*/ /*
//指標加法需要調整,調整的權重為指標本身去掉乙個*號,然後求sizeof
//如,指標p+-n,實際加的位址為p+-n*(sizeof(*p))
int main() ;
int *p = arr;
*p = 10;
p++;//加乙個單元格 p++ 1.加乙個位元組(不合理)計算太複雜
2.加乙個單元格
// 3.加整個陣列(不合理)只是起點與終點起作用
//p = (int *)((int )p + 1);
*p = 20;
printf("%d,%x,%d\n",arr[0],arr[0],arr[1]);
return 0; }
*///字串複製
void mystrcpy1(char *des,char *src)//1
des[i] = '\0'; }
void mystrcpy2(char *des,char *src)
*des = '\0'; }
void mystrcpy3(char *des,char *src)
*(des+i) = '\0'; }
void mystrcpy(char *des,char *src)
//字元函式
int main()
//有如下的需求
//str2 = str1; //複製
//str3 += str1;//將新串鏈結到原串的後面
//str1 < str2 //比較大小
return 0; }
/* //字元陣列的初始化
int main() ;
char crr[10] = ;
char drr[10] = "abcd";//字串:一定包含'\0'。 也只有包含'\0'才能成為字串
//char err[4] = "abcd";//error
char frr[4] = ;//不是字串,因為沒用'\0'
char hrr[5] = ;//是字串
printf("%s\n%s\n",frr,hrr);
printf("%d,%d,%d\n",0,null,'\0');
//char *cp = (char *)malloc(10);
//float brr[10];
//short crr[10];
return 0; }
*/ /*
//指標
void fun(int **pp)
int main()
*/#if 0
void swap_err1(int a,int b)//只修改形參值
void swap_err2(int *p1,int *p2)//傳指標但沒有解引用,只修改形參的值
void swap_err3(int *p1,int *p2)//野指標
void swap(int *p1,int *p2)//子函式的改變要想影響到父函式:1、傳指標;2、解引用
//todo 不使用臨時變數交換a,b 的值
int main()
#endif/*
int main()
*//*
//void show(int arr[10],int len)//int *arr,
void show(int *arr,int len)
;//初始化部分內容,剩餘為0
//for(int i=0;ireturn 0; }
*/
指標加減運算 void 的加減
大家都知道對於一般的指標,比如int 等,其加減運算是以元素的大小為單位的。unsigned int s unsigned int 0x1234 cout s 1 endl cout s 1 endl 其結果分別是 0x1238,0x1230 分別加減了乙個unsigned int的大小,也就是4個...
指標的「加 減」 運算,指標儲存(c語言)
int a 10 定義乙個整型變數a,並將10賦值給a int p a 定義乙個整型指標變數p,並將a的位址賦值給p p int 1000 將 int 1000強轉為整型指標 int 並賦值給p 在c語言中,記憶體可以理解為乙個字元陣列,基本單位是位元組,每個位元組包含乙個位址,而位址是由cpu的位...
C語言指標與指標之間的加減運算
知識點 1 指標和指標可以做減法操作,但不適合做加法運算 2 指標和指標做減法適用的場合 兩個指標都指向同乙個陣列,相減結果為兩個指標之間的元素數目,而不是兩個指標之間相差的位元組數。比如 int int array 4 int p int1 int array 0 int p int2 int a...