C-指针02 2017/11/24
生活随笔
收集整理的這篇文章主要介紹了
C-指针02 2017/11/24
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/*
復(fù)習(xí)
1.指針類型 int *指針類型 指針指向的變量類型指針指向哪個(gè)變量2.基本數(shù)據(jù)類型 4種指針類型 存放的地址 和系統(tǒng)有關(guān)系 4個(gè)字節(jié)數(shù)組類型結(jié)構(gòu)體 枚舉 聯(lián)合3.指針加法減法 p++ 和數(shù)組搭配使用4.兩個(gè)運(yùn)算符 *取值(解引用) &取地址5. *(p+i) p[i] (p是指針 i是整型)p[i]的地址 &p[i] p+i*/#include<stdio.h>
#include<string.h>
int win;//全局變量
int main()
{//1.復(fù)習(xí)//int* p;//int *p;int * p;沒有任何區(qū)別int* p, *q;//定義兩個(gè)指針 指針前面要記得單獨(dú)加*char chArr[] = "helloworld";//字符數(shù)組 存放字符串 棧區(qū)char *pArr = "helloworld";//指針 字符串存放在常量區(qū) ,指針指向它存放的首地址 字符串不能(不可以被修改)//代碼區(qū) 全局?jǐn)?shù)據(jù)區(qū)(常量區(qū)) 堆區(qū) 棧區(qū)/*數(shù)組輸出 除了字符數(shù)組 字符數(shù)組 \0作為結(jié)尾 printf("%s",chArr);//用printf輸出%s 輸出這個(gè)地址和地址后的所有字符 直到遇到\0為止scanf("%s",chArr);//數(shù)組名就是數(shù)組首地址 數(shù)組第一個(gè)元素的地址*///相同點(diǎn) puts(chArr);//都可以用來打印printf strcmp strlen
puts(pArr);//不同點(diǎn) pArr不能用于輸入 //gets(chArr);//gets(pArr);//不可以修改內(nèi)容//strcpy strcat strlen 字符串的函數(shù) //strcpy(pArr, chArr);//不可以修改常量區(qū)//2.指針的加加 ++ 指針加1 // 指針++的時(shí)候同時(shí)解引用int iArr[10] = { 0 };int iBrr[10] = { 0 };p = iArr, q = iBrr;//*p++; (*p)++; printf("*p=%d,p=%p\n", *p, p);//*p++;*p++=5; //先給*p賦值 然后p++ 等價(jià)*p=5,p++printf("*p=%d,p=%p\n", *p, p);printf("*q=%d,q=%p\n", *q, q);(*q)++;printf("*q=%d,q=%p\n", *q,q);/**p++ p加了1 (*p)++ p指向的內(nèi)容 加了1*(p++) 和*p++沒有區(qū)別//課后自己試試* 后++ 取值 p++ 都是操作指針 *p++ (*p)++ 對*p進(jìn)++ 指向的變量進(jìn)行++今天的作業(yè)題目 測試作用*++p++*p附加題(可以不做) 測試二級指針和數(shù)組指針加1之后的地址偏移*///3.指針和數(shù)組 (理論)/*指針加1 偏移一個(gè)數(shù)據(jù)的長度數(shù)組同樣可以看成一個(gè)類型 int arr[10]arr -->大小 存數(shù)據(jù) 地址*/int idArr[5][10];//二維數(shù)組//p = idArr;//類型不一致//方案1//p = &idArr[0][0]; //賦值數(shù)組第一個(gè)元素地址//for (int i = 0; i < 5 * 10; i++)//用指針給數(shù)組賦值//{// *p = i; // p++;// //*p++ = i;//}//方案2//數(shù)組指針 指針指向整個(gè)數(shù)組 //int (*pd)[10]=idArr;int(*pd)[10];//定義一個(gè)數(shù)組指針//pd= idArr;pd = &idArr[0];//賦值 for (int i = 0; i < 5; i++)//用數(shù)組指針給他賦值
{for (int j = 0; j < 10; j++){pd[i][j] = i*j;//使用
}}/*pd[i][j] (*(p+i))[j] *(p[i]+j) *(*(p+i)+j)等價(jià)*pd[3] ==>*((pd[3])+0)*///數(shù)組指針和指針數(shù)組int(*point)[10];//數(shù)組指針 指向數(shù)組的指針int *parr[10];//指針數(shù)組 int* parr[10] 指針數(shù)組 10個(gè)int* 10個(gè)元素都是指針//二級指針 指針保存的是一個(gè)一級指針的地址 用到二級指針int **pp;pp= &p;//p是一級指針 pp保存一級指針地址
pp = parr;//指針數(shù)組名pp = &parr[0];//parr[0]是一個(gè)一級指針 for (int i = 0; i < 5; i++)//循環(huán)打印
{for (int j = 0; j < 10; j++){printf("%d\t", idArr[i][j]);}printf("\n");}getchar();return 0;}
?
轉(zhuǎn)載于:https://www.cnblogs.com/guijin/p/8298176.html
總結(jié)
以上是生活随笔為你收集整理的C-指针02 2017/11/24的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVPArms官方快速组件化方案开源,来
- 下一篇: ARX二次开发 遍历删除所有的约束