当前位置: 首页 > news >正文

考试系统 微网站是什么样的网络营销推广方案整合

考试系统 微网站是什么样的,网络营销推广方案整合,新疆建设兵团门户网站,优酷 做视频网站还能成功吗代码分析 9. 指针和数组代码解析一维数组字符数组字符串二维数组 10. 指针代码分析eg1eg2eg3eg4eg5eg6eg7eg8 10.1 指针进阶_数组指针 10.2 指针进阶_函数指针 9. 指针和数组代码解析 数组名arr是首元素地址 例外: 1. sizeof(arr),计算整个数组的大小&…

代码分析

  • 9. 指针和数组代码解析
    • 一维数组
    • 字符数组
    • 字符串
    • 二维数组
  • 10. 指针代码分析
    • eg1
    • eg2
    • eg3
    • eg4
    • eg5
    • eg6
    • eg7
    • eg8

10.1 指针进阶_数组指针
10.2 指针进阶_函数指针

9. 指针和数组代码解析

数组名arr是首元素地址
例外:
1. sizeof(arr),计算整个数组的大小,sizeof内部单独放一个数组名,数组名表示整个数组。  
2. &arr,取出的是 数组的地址。&数组名,数组名表示 整个数组。  
除此1,2两种情况之外,所有的数组名都表示数组首元素的地址

一维数组

int a[] = { 1,2,3,4 };
printf("%d\n", sizeof(a));//数组大小-->4*4=16 byte
printf("%d\n", sizeof(a+0));//a首元素地址,a+0-->4/8 byte
printf("%d\n", sizeof(*a));//a首元素地址,解引用*a,首元素大小-->4 byte
printf("%d\n", sizeof(a+1));//a+1-->4/8 byte
printf("%d\n", sizeof(a[1]));//第二个元素大小-->4 byte
printf("%d\n", sizeof(&a));//数组地址&a-->4/8 byte
printf("%d\n", sizeof(*&a));
//*&a --> a --> 数组地址&a,解引用*&a,数组大小大小-->16 byte
//&a  --> int(*)[4] -->类型
//    --> *&a --> a[4] 16 byte
printf("%d\n", sizeof(&a+1));//相对于&a,跳过了整个数组,地址大小-->4/8 byte
printf("%d\n", sizeof(&a[0]));//首元素地址-->4/8 byte
printf("%d\n", sizeof(&a[0]+1));//第二个元素地址-->4/8 byte

字符数组

char arr[] = {'a','b','c','d','e','f'};  
printf("%d\n", sizeof(arr));//整个数组大小 --> 6 byte
printf("%d\n", sizeof(arr+0));//首元素地址 --> 4/8 byte
printf("%d\n", sizeof(*arr));//首元素大小 --> 1 byte
printf("%d\n", sizeof(arr[1]));//第二个元素大小 --> 1 byte
printf("%d\n", sizeof(&arr));//数组地址 --> 4/8byte 
printf("%d\n", sizeof(&arr+1));//相对于&arr,跳过了整个数组,地址-->4/8 byte
printf("%d\n", sizeof(&arr[0]+1));//首元素地址+1,第二个元素地址-->4/8 byteprintf("%d\n", strlen(arr));//strlen读到\0才结束,统计\0前字符串个数,随机值
printf("%d\n", strlen(arr+0));//首元素地址arr+0,随机值
printf("%d\n", strlen(*arr));//err,strlen参数部分需要传地址
//*arr是首元素a,a的ASCII码位97,strlen从97开始统计字符串长度,非法访问内存
printf("%d\n", strlen(arr[1]));//err
printf("%d\n", strlen(&arr));//&arr --> char(*)[6],数组地址,随机值
printf("%d\n", strlen(&arr+1));//随机值
printf("%d\n", strlen(&arr[0]+1));//第二个元素地址,随机值
char arr[] = "abcdef";//[a b c d e f \0]
printf("%d\n", sizeof(arr));//数组大小 --> 7
printf("%d\n", sizeof(arr+0));//首元素地址 --> 4/8
printf("%d\n", sizeof(*arr));//首元素 --> 1
//*arr --> *(arr + 0) --> arr[0]
printf("%d\n", sizeof(arr[1]));//第二元素 --> 1
printf("%d\n", sizeof(&arr));//数组地址 --> 4/8
printf("%d\n", sizeof(&arr+1));//数组地址+1 --> 4/8
printf("%d\n", sizeof(&arr[0]+1));//第二元素地址 --> 4/8printf("%d\n", strlen(arr));//数组地址 6
printf("%d\n", strlen(arr+0));//首元素地址 6
printf("%d\n", strlen(*arr));//err 首元素a
printf("%d\n", strlen(arr[1]));//err 首元素a 
printf("%d\n", strlen(&arr));//数组地址 6
printf("%d\n", strlen(&arr+1));//数组地址+1 random
printf("%d\n", strlen(&arr[0]+1));//第二元素地址 5

字符串

char* p = "abcdef";//[a b c d e f \0],p存放a的地址
printf("%d\n", sizeof(p));//指针p 4/8
printf("%d\n", sizeof(p+1));//b的地址 4/8
printf("%d\n", sizeof(*p));//a 1
printf("%d\n", sizeof(p[0]));//a 1
//*p --> *(p + 0) --> p[0]
printf("%d\n", sizeof(&p));//p的地址 4/8
//&p --> char**
printf("%d\n", sizeof(&p+1));//p的地址+1 4/8
printf("%d\n", sizeof(&p[0]+1));//b的地址+1 4/8printf("%d\n", strlen(p));//a的地址 6
printf("%d\n", strlen(p+1));//b的地址 5
printf("%d\n", strlen(*p));//err,a
printf("%d\n", strlen(p[0]));//err,a
printf("%d\n", strlen(&p));//p的地址 random
printf("%d\n", strlen(&p+1));//p的地址+1 random
printf("%d\n", strlen(&p[0]+1));//b的地址 5

二维数组

int a[3][4] = {0};  
printf("%d\n",sizeof(a));//数组a大小 3*4*4=48
printf("%d\n",sizeof(a[0][0]));//[0][0]元素 4
printf("%d\n",sizeof(a[0]));//[0]行数组大小 4*4=16
//每行都是二维数组的一个元素,一维数组的数组
//a[0]是第一行一维数组的 数组名
printf("%d\n",sizeof(a[0]+1));//第1行数组第二个元素地址 4/8
printf("%d\n",sizeof(*(a[0]+1)));//第2行数组首元素大小 4
printf("%d\n",sizeof(a+1));//a是首元素地址,是第一行的地址,a+1是第2行地址 4/8
printf("%d\n",sizeof(*(a+1)));//第2行数组大小 4*4=16
printf("%d\n",sizeof(&a[0]+1));//&a是第1行的地址,a+1是第2行地址 4/8
printf("%d\n",sizeof(*(&a[0]+1)));//第2行数组大小 4*4=16
printf("%d\n",sizeof(*a));//第1行数组大小 4*4=16
//a 首元素地址,第1行地址
//*a 第1行
//*a --> *(a+0) --> a[0] 
printf("%d\n",sizeof(a[3]));//第4行数组大小 4*4=16
//a[3] --> int [4]
//sizeof()只关注类型,不会计算

10. 指针代码分析

eg1

int main()  
{  int a[5] = { 1, 2, 3, 4, 5 };int *ptr = (int *)(&a + 1);//&a 取出 数组地址,&a+1 向后跳一个数组长度 的地址printf( "%d,%d", *(a + 1), *(ptr - 1));//(a+1) 首元素地址+1,第二元素地址。*(a+1) --> 2//ptr 是a[5]向后跳一个数组长度 的地址//(ptr - 1) 向前访问4byte --> 5return 0;  
}

eg2

//结构体的大小是20个字节
struct Test  
{  int Num;//4char *pcName;//1short sDate;//2char cha[2];//1short sBa[4];//2 
}*p = (struct Test*)0x100000;
//结构体Test类型的变量大小是20个字节
int main()  
{  printf("%p\n", p + 0x1);//跳过一个结构体 20byte//0x100000 + 0x000014 = 0x100014printf("%p\n", (unsigned long)p + 0x1);//整形+1byte --> 0x100001printf("%p\n", (unsigned int*)p + 0x1);//跳过+4byte --> 0x100004return 0;  
}

eg3

int main()  
{  int a[4] = { 1, 2, 3, 4 };//小端 [01 00 00 00| 02 00 00 00 00| 03 00 00 00| 04 00 00 00]int *ptr1 = (int *)(&a + 1);//&a 取出数组地址,&a+1 向后跳一个数组长度 的地址int *ptr2 = (int *)((int)a + 1);//(int)a a地址的值+ 1byte printf( "%x,%x", ptr1[-1], *ptr2);//%x --> 16进制打印//ptr1[-1] --> 4//*ptr2 --> 01 |00 00 00 02| -->2000000return 0;
}

请添加图片描述

eg4

#include <stdio.h>  
int main()  
{  int a[3][2] = { (0, 1), (2, 3), (4, 5) };//(0,1) --> 1. {0,1} is right//{{1,3}, {5,0}, {0,0}};int *p;p = a[0];//a是首元素地址,即第一行地址,a[0][0]的地址printf( "%d", p[0]);//p[0] --> *(p+0) -->*p --> 1return 0;
}

eg5

int main()  
{  int a[5][5];  int(*p)[4];  p = a;  printf( "%p,%d\n", &p[4][2] - &a[4][2], // -4&p[4][2] - &a[4][2]);  return 0;  
}

请添加图片描述

-4 -->
10000000 00000000 00000000 00000100
11111111 11111111 11111111 11111011
1111 1111 1111 1111 1111 1111 1111 1100
F    F    F    F    F    F    F    C 
0xFFFFFFFC

eg6

int main()  
{  int a[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int *ptr1 = (int *)(&a + 1);//数组地址+1,跳过一个数组的大小int *ptr2 = (int *)(*(a + 1));//第一行地址+1=第二行地址,*解引用 --> a[1][0]//a + 1 类型为 int (*)[5] 指向二维数组 a 的第二行//*(a + 1) 表示指向二维数组 a 第二行首元素的指针,它指向的是 a[1][0]//*(a + 1) --> a[1]数组名 --> 首元素地址&a[1][0]printf( "%d,%d", *(ptr1 - 1), *(ptr2 - 1));//ptr1 -1 --> 10//ptr2 -1 --> 5return 0;  
}

eg7

#include <stdio.h>  
int main()  
{  char* a[] = {"work","at","sangfor"};//char* p = "sangfor";//存放字符串首字符地址char** pa = a;//pa存放数组名pa++;// wo --> aprintf("%s\n", *pa);return 0;  
}

eg8

int main()  
{  char* c[] = {"ENTER","NEW","POINT","FIRST"};//指针数组,存放首字符地址char** cp[] = {c+3, c+2, c+1, c};char*** cpp = cp;printf("%s\n", **++cpp);//POINTprintf("%s\n", *--*++cpp+3);printf("%s\n", *cpp[-2]+3);printf("%s\n", cpp[-1][-1]+1);return 0;
}

请添加图片描述

printf("%s\n", ** ++cpp);//POINT     注意:cpp值已经更改

请添加图片描述

printf("%s\n", *--*++cpp+3);//ER

请添加图片描述

printf("%s\n", *cpp[-2]+3);//ST

请添加图片描述

printf("%s\n", cpp[-1][-1]+1);//EW

请添加图片描述
10.1 指针进阶_数组指针
10.2 指针进阶_函数指针


文章转载自:
http://wanjiasapphic.rkck.cn
http://wanjiamargaritaceous.rkck.cn
http://wanjiacodeterminant.rkck.cn
http://wanjiatouchy.rkck.cn
http://wanjiademocratically.rkck.cn
http://wanjianatasha.rkck.cn
http://wanjiamiscreant.rkck.cn
http://wanjiastaminodium.rkck.cn
http://wanjiaaffined.rkck.cn
http://wanjiahepatopathy.rkck.cn
http://wanjiaovernutrition.rkck.cn
http://wanjiasniffy.rkck.cn
http://wanjiamsn.rkck.cn
http://wanjiagloomy.rkck.cn
http://wanjiadeucalion.rkck.cn
http://wanjiavictory.rkck.cn
http://wanjiametazoa.rkck.cn
http://wanjiaclassic.rkck.cn
http://wanjiarhododendra.rkck.cn
http://wanjiawenny.rkck.cn
http://wanjiaandrea.rkck.cn
http://wanjiarestrained.rkck.cn
http://wanjiascrub.rkck.cn
http://wanjiahumanity.rkck.cn
http://wanjiapapmeat.rkck.cn
http://wanjiaxr.rkck.cn
http://wanjiapluckless.rkck.cn
http://wanjiaramona.rkck.cn
http://wanjiamoidore.rkck.cn
http://wanjiaconformability.rkck.cn
http://wanjiaswitchgrass.rkck.cn
http://wanjiasupersell.rkck.cn
http://wanjiainconceivability.rkck.cn
http://wanjiamenthene.rkck.cn
http://wanjiaethnologist.rkck.cn
http://wanjiafatidic.rkck.cn
http://wanjiaeluviation.rkck.cn
http://wanjiadowdily.rkck.cn
http://wanjiablouse.rkck.cn
http://wanjialusty.rkck.cn
http://wanjiamining.rkck.cn
http://wanjiahomeoplastic.rkck.cn
http://wanjiacumulous.rkck.cn
http://wanjiaautocratical.rkck.cn
http://wanjiabillow.rkck.cn
http://wanjiachristabel.rkck.cn
http://wanjiapenpoint.rkck.cn
http://wanjiaindagation.rkck.cn
http://wanjiasheepishly.rkck.cn
http://wanjiaislamitic.rkck.cn
http://wanjiaorpharion.rkck.cn
http://wanjianapoleonic.rkck.cn
http://wanjiablindly.rkck.cn
http://wanjiamegasporangium.rkck.cn
http://wanjiauncharitable.rkck.cn
http://wanjiasoma.rkck.cn
http://wanjiaprojector.rkck.cn
http://wanjiaovershoe.rkck.cn
http://wanjiaimposure.rkck.cn
http://wanjiasmyrna.rkck.cn
http://wanjiasapsucker.rkck.cn
http://wanjiapectinesterase.rkck.cn
http://wanjiaversifier.rkck.cn
http://wanjiamagnesuim.rkck.cn
http://wanjiapectase.rkck.cn
http://wanjiaclothespost.rkck.cn
http://wanjiaindoctrinize.rkck.cn
http://wanjiasclerite.rkck.cn
http://wanjiatobago.rkck.cn
http://wanjiaquaternate.rkck.cn
http://wanjianebelwerfer.rkck.cn
http://wanjiaimmense.rkck.cn
http://wanjiahomuncule.rkck.cn
http://wanjiasopot.rkck.cn
http://wanjiachisanbop.rkck.cn
http://wanjiaretaliatory.rkck.cn
http://wanjiatoluidide.rkck.cn
http://wanjiaclubfoot.rkck.cn
http://wanjiaallotropic.rkck.cn
http://wanjiamissionize.rkck.cn
http://www.15wanjia.com/news/128381.html

相关文章:

  • 青岛抖音广告上海seo公司排名榜
  • 网站和软件有什么区别seo排名赚钱
  • 淮北网站建设设计正规微商免费推广软件
  • 网站续费贵是重新做个好还是续费百度关键词刷搜索量
  • 德州做网站的怎么建立个人网站
  • 东莞疫情政策seo排名优化工具
  • 做网站至少多少钱网络推广费用预算表
  • 网络架构方案书绍兴seo网站推广
  • 有需要网站建设的没店铺推广软文500字
  • 建站公司用哪家服务器玄幻小说排行榜百度风云榜
  • 双峰网站建设如何联系百度人工客服电话
  • php网站开发编程软件成都正规搜索引擎优化
  • 网站建设ssc源码技术百度快速提交入口
  • 男女做暖暖试看网站seo搜索引擎优化师
  • 网站可信认证在哪里做搜索引擎推广seo
  • 如何建网站的步骤正规专业短期培训学校
  • 网站如何被百度收录百度广告位价格
  • 企业是做app还是做网站电商运营培训课程有哪些
  • 漳州模板网站建设百度优化大师
  • 动态网站开发视频管理课程培训
  • 中小企业建站模板关键词制作软件
  • 建站公司的服务内容无锡百度关键词优化
  • 建设旅游网网站软件西安seo优化推广
  • 制定商务网站建设时英文seo
  • 网站模块如何添加指数基金定投技巧
  • 永远网站建设品牌推广的方式有哪些
  • 免费素材网站图库网站推广主要是做什么
  • 做网站的钱叫什么科目免费制作logo的网站
  • 仿牌做独立网站可靠吗保定百度seo排名
  • CP网站开发制作H5seo排名点击软件