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

建设银行软件官方网站下载五大建设的内容

建设银行软件官方网站下载,五大建设的内容,手机免费建wap,哪家做网站做的好文章目录一. 一维数组二.字符数组三.字符指针四.二维数组五.指针笔试题一. 一维数组 首先说明#xff1a;需熟记以下三个规则。 规则1.数组名指的是取出整个数组的地址。 规则2.数组名被单独放在sizeof内部#xff0c;计算的是整个数组的大小。 说明#xff1a;这里的单… 文章目录一. 一维数组二.字符数组三.字符指针四.二维数组五.指针笔试题一. 一维数组 首先说明需熟记以下三个规则。 规则1.数组名指的是取出整个数组的地址。 规则2.数组名被单独放在sizeof内部计算的是整个数组的大小。 说明这里的单独指的是不参与运算如果不单独按数组首元素的地址进行计算。 规则3.只要是地址的大小就是4/8个字节32位——X86是4个字节,64位上是8个字节 注意 1.sizeof的返回值是 unsigned int 2.sizeof是操作符也是关键字但不是函数。 3.sizeof在预编译的时候就已经处理好了调试是看不到求解过程的 #includestdio.h int main() {//一维数组int a[] {1,2,3,4};printf(%d\n,sizeof(a));//运用规则1我们直到这里的a是整个数组的大小——4个整形——16个字节//所以答案是16printf(%d\n,sizeof(a0));//运用规则2,a不是被单独放在sizeof内部所以里的a是数组首元素的的地址//再运用规则3可知地址在32位——4,64位——8所以答案是4/8printf(%d\n,sizeof(*a));//*a运用规则2这里的a不是单独出现所以是数组首元素的地址对数组首元素解引用//得出*a是数组首元素——1——类型为int——4个字节//答案4printf(%d\n,sizeof(a1));//运用规则2,a不是被单独放在sizeof内部所以里的a是数组首元素的的地址//对a1得到的是数组第二个元素的地址//再运用规则3可知地址在32位——4,64位——8//答案是4/8printf(%d\n,sizeof(a[1]));//运用规则2这里的a不是单独出现所以是数组首元素的地址这里表示的是数组的第//二个元素——2——类型为int——大小为4个字节//答案是4printf(%d\n,sizeof(a));//运用规则1,这里的a表示的整个数组的大小再运用规则3只要是地址大小就为4或//8个字节//答案是:4/8printf(%d\n,sizeof(*a));//运用规则1这里a得到的是整个数组的地址对整个数组的地址解引用得到的为数组//名运用规则2数组名在sizeof内部是整个数组的大小——4个整形-16个字节//答案:16printf(%d\n,sizeof(a1));//运用规则1这里的a指的是整个数组的地址对整个数组加一跳过的是一个数组的大小//也就是跳过了4个整形(16个字节)但结果还是数组指针的类型——地址——运用规则3//再运用规则3可知地址在32位——4,64位——8//答案是:4/8//说明:这里的1之后得到的是野指针但是我们只是计算并不访问和修改//所以是没有问题的printf(%d\n, sizeof(a[0]));//a首先与[]结合([]的优先级大于)得到是数组第一个元素对数组的元素取地址得到的//第一个元素的地址是地址——运用规则3-地址为4或8个字节//答案:4/8printf(%d\n,sizeof(a[0]1));//a首先与[]结合([]的优先级大于)得到是数组第一个元素对数组的元素取地址得到的//第一个元素的地址,对第一个元素的地址加一得到的是第二个元素的地址是地址——//运用规则3-地址为4或8个字节//答案:4/8个字节return 0; }到这里我们的一维数组就讲完了再看看下面的代码思考一下是否豁然开朗 #includestdio.h int main() {//一维数组int a[] { 1,2,3,4 };printf(%d\n, sizeof(a));printf(%d\n, sizeof(a 0));printf(%d\n, sizeof(*a));printf(%d\n, sizeof(a 1));printf(%d\n, sizeof(a[1]));printf(%d\n, sizeof(a));printf(%d\n, sizeof(*a));printf(%d\n, sizeof(a 1));printf(%d\n, sizeof(a[0]));printf(%d\n, sizeof(a[0] 1));return 0; }二.字符数组 #includestdio.h int main() {char arr[] { a,b,c,d,e,f };printf(%d\n, sizeof(arr));//利用规则2arr被单独放在sizeof内部说明arr代表的是整个数组-6个字符-6字节//答案:6printf(%d\n, sizeof(arr 0));//利用规则2arr没有被单独放在sizeof内部说明arr代表的是数组首元素的地址加0也是数组首元素的地址。//利用规则3: 只要是地址就是4/8个字节//答案4/8printf(%d\n, sizeof(*arr));//利用规则2:arr没有被单独放在sizeof内部说明arr代表的是数组首元素的地址对arr解引用是数组//首元素-字符类型—1//答案:1printf(%d\n, sizeof(arr[1]));//利用规则2:arr没有被单独放在sizeof内部说明arr代表的是数组首元素的地址arr[1]是数组的//第二个元素-字符类型-1//答案1printf(%d\n, sizeof(arr));//利用规则1:arr是取出了整个数组的地址利用规则3:只要是地址就是4/8个字节//答案:4/8printf(%d\n, sizeof(arr 1));//利用规则1:arr是取出了整个数组的地址arr1跳过整个数组利用规则3:只要是地址就是4/8个字节//答案:4/8printf(%d\n, sizeof(arr[0] 1));//利用规则2:这里的先与[]结合arr[0]代表的是第一个数组的元素对第一个数组元素取地址是第一个元素的地址//加一是数组第二个元素的地址。利用规则3:只要是地址就是4/8个字节//答案:4/8return 0; } 回顾: char arr[] {a,b,c,d,e,f}; printf(%d\n, sizeof(arr)); printf(%d\n, sizeof(arr0)); printf(%d\n, sizeof(*arr)); printf(%d\n, sizeof(arr[1])); printf(%d\n, sizeof(arr)); printf(%d\n, sizeof(arr1)); printf(%d\n, sizeof(arr[0]1));#includestdio.h int main() {char arr[] { a,b,c,d,e,f };printf(%d\n, strlen(arr));//注意此arr是数组首元素的地址类型匹配但是数组内部的元素没有\0,因此求出的是大于等于6的随机值//答案:大于等于6的随机值printf(%d\n, strlen(arr 0));//arr0还是数组首元素的地址类型匹配但是数组内部的元素没有\0,因此求出的是大于等于6的随机值//答案:大于等于6的随机值printf(%d\n, strlen(*arr));//*arr对数组首元素地址解引用得到的是字符a——97类型不匹配但是会被函数接收当做97的地址内存//中有些空间是不能被访问的所以会报错//答案:报错printf(%d\n, strlen(arr[1]));//arr[1]是数组的第二个元素字符b-98,与strlen类型不匹配但是会被函数接收当做98的地址内存//中有些空间是不能被访问的所以会报错.printf(%d\n, strlen(arr));//arr取出的是整个数组的地址与数组首元素的地址相同与strlen类型不匹配但是会被strlen识别为//数组首元素的地址所以跟arr相同但是数组内部的元素没有\0,因此求出的是大于等于6的随机值//答案:大于等于6的随机值printf(%d\n, strlen(arr1));//arr取出的是整个数组的地址与数组首元素的地址相同加1跳过整个数组与strlen类型不匹配//但是会被strlen识别为,数组最后一个元素的下一个元素的地址未知空间因此求出的是随机值//答案:随机值printf(%d\n, strlen(arr[0]1));//arr先与[]结合表示的是数组第一个元素对数组第一个元素取地址再加1得到的是数组第二个元素的地址//但是数组内部的元素没有\0,因此求出的是大于等于5的随机值//答案:大于等于5的随机值return 0; }回顾: char arr[] abcdef; printf(%d\n, sizeof(arr)); printf(%d\n, sizeof(arr0)); printf(%d\n, sizeof(*arr)); printf(%d\n, sizeof(arr[1])); printf(%d\n, sizeof(arr)); printf(%d\n, sizeof(arr1)); printf(%d\n, sizeof(arr[0]1));#includestdio.h int main() {char arr[] abcdef;printf(%d\n, sizeof(arr));//利用规则2arr被单独放在sizeof内部表示的是整个元素的大小注意字符串最后有个\0,所以是7个字符——7//答案:7printf(%d\n, sizeof(arr0));//利用规则2:arr没有被单独放在sizeof内部arr0表示的是数组首元素的地址利用规则3只要是地址就是4/8//答案:4/8printf(%d\n, sizeof(*arr));//利用规则2:arr没有被单独放在sizeof内部*arr表示的是数组第一个元素也就是字符类型——1个字节//答案:1printf(%d\n, sizeof(arr[1]));//这里的arr[1]表示的数组第二个元素——‘b’——类型为char-1字节//答案1printf(%d\n, sizeof(arr));//利用规则1:arr指的是整个数组的地址运用规则3只要是地址就是4/8个字节//答案:4/8printf(%d\n, sizeof(arr1));//利用规则1:arr指的是整个数组的地址加1跳过了整个数组运用规则3只要是地址就是4/8个字节//答案:4/8printf(%d\n, sizeof(arr[0]1));//arr先与[0]结合表示的是第一个数组的元素对数组的第一个元素取地址表示的是数组首元素的地址对数组//的首元素加1表示的是数组第二个元素的地址利用规则3只要是地址就是4/8个字节//答案:4/8return 0; }回顾: char arr[] abcdef; printf(%d\n, sizeof(arr)); printf(%d\n, sizeof(arr0)); printf(%d\n, sizeof(*arr)); printf(%d\n, sizeof(arr[1])); printf(%d\n, sizeof(arr)); printf(%d\n, sizeof(arr1)); printf(%d\n, sizeof(arr[0]1));strlen函数的补充: 1.返回值为:size_t(unsigned int) 2.函数参数为const char * str 3.strlen求的只能数字符串长度不带\0 4.strlen遇到\0就停止运算了 4.strlen数组名单独放在里面是数组首元素的地址(要跟sizeof区分开) strlen的实现 #include stdio.h #include assert.h size_t my_strlen(const char*str) {assert(str);char* ret str;while (*str){;} return (str - ret -1); }#includestdio.h int main() {char arr[] abcdef;printf(%d\n, strlen(arr));//arr是数组首元素的地址字符串的结尾是有\0的所以最后求的结果是6//答案:6 printf(%d\n, strlen(arr0));//arr0是数组首元素的地址字符串的结尾是有\0的所以最后求的结果是6//答案6printf(%d\n, strlen(*arr));//arr对数组首元素地址解引用得到的是字符a——97类型不匹配但是会被函数接收当做97的地址内存//中有些空间是不能被访问的所以会报错。//答案:报错printf(%d\n, strlen(arr[1]));//arr[1]是数组的第二个元素字符b-98,与strlen类型不匹配但是会被函数接收当做98的地址内存//中有些空间是不能被访问的所以会报错.//答案:报错printf(%d\n, strlen(arr));//arr取出的是整个数组的地址与数组首元素的地址相同与strlen类型不匹配但是会被strlen识别为//数组首元素的地址所以跟arr相同所以求的是字符串的长度——6//答案6printf(%d\n, strlen(arr1));//arr取出的是整个数组的地址与数组首元素的地址相同加1跳过整个数组与strlen类型不匹配//但是会被strlen识别为,数组最后一个元素的下一个元素的地址未知空间因此求出的是随机值//答案:随机值printf(%d\n, strlen(arr[0]1));//arr先与[]结合表示的是数组第一个元素对数组第一个元素取地址再加1得到的是数组第二个元素的地址//所以求出的是从b开始数遇到\0停止所以是5//答案:5return 0; }回顾: printf(%d\n, strlen(arr)); printf(%d\n, strlen(arr0)); printf(%d\n, strlen(*arr)); printf(%d\n, strlen(arr[1])); printf(%d\n, strlen(arr)); printf(%d\n, strlen(arr1)); printf(%d\n, strlen(arr[0]1));三.字符指针 #includestdio.h int main() {char *p abcdef;//说明:字符串返回的是字符串首元素的地址。printf(%d\n, sizeof(p));//p是指针就是4/8个字节//答案:4/8printf(%d\n, sizeof(p1));//p1是字符串第二个字符的地址是地址就为4/8//答案:4/8printf(%d\n, sizeof(*p));//*p解引用得到的是第一个字符a,大小为1个字节//答案:1printf(%d\n, sizeof(p[0]));//p[0]指的是字符串的第一个元素a,大小为1个字节//答案:1printf(%d\n, sizeof(p));//对p取地址得到的是p的地址是地址就是4/8个字节//答案:4/8printf(%d\n, sizeof(p1));//对p取地址得到的是p的地址是地址就是4/8个字节//答案:4/8printf(%d\n, sizeof(p[0]1));//p[0]表示的是字符串的第一个元素a,对字符串的第一个元素取地址是字符串的第一个元素的地址//1是字符串第二个元素的地址是地址就是4/8个字节//答案:4/8return 0; }回顾: printf(%d\n, sizeof(p)); printf(%d\n, sizeof(p1)); printf(%d\n, sizeof(*p)); printf(%d\n, sizeof(p[0])); printf(%d\n, sizeof(p)); printf(%d\n, sizeof(p1)); printf(%d\n, sizeof(p[0]1));#includestdio.h int main() {char *p abcdef;printf(%d\n, strlen(p));//p这里指的是指针也是字符串首元素的地址所以求的是字符串的长度-6//答案:6printf(%d\n, strlen(p1));//p1这里指的是字符串第二个元素的地址所以求的是从b开的长度-5//答案:5printf(%d\n, strlen(*p));//*p求的是第一个字符a,这里的a是被放在变量中的所以是1个字节//答案:1printf(%d\n, strlen(p[0]));//p[0]表示的是第一个字符‘a’,这里的a是被放在变量中的所以是1个字节//答案:1printf(%d\n, strlen(p));//p指的是二级指针也就是p的地址所以传p的地址得出的是随机数//答案:随机数printf(%d\n, strlen(p1));//p指的是二级指针也就是p的地址然后对p的地址1所以传p1的地址得出的还是随机数//答案:随机数printf(%d\n, strlen(p[0]1));//p先与[0]结合说明的p[0]指的是字符串的第一个元素对字符串的第一个元素取地址相当于字符串首元素的地址//对首元素的地址1得到的是第二个字符的地址也就是从b’往后数——长度为5//答案:5return 0; }回顾: printf(%d\n, strlen(p)); printf(%d\n, strlen(p1)); printf(%d\n, strlen(*p)); printf(%d\n, strlen(p[0])); printf(%d\n, strlen(p)); printf(%d\n, strlen(p1)); printf(%d\n, strlen(p[0]1));四.二维数组 #includestdio.h int main() {//二维数组int a[3][4] {0};//表示的是三行四列的数组printf(%d\n,sizeof(a));//数组名单独放在sizeof内部表示的是整个数组也就是12个整形是48个字节//答案:48printf(%d\n,sizeof(a[0][0]));//a[0][0]表示的是第一个元素类型为int大小为4个字节printf(%d\n,sizeof(a[0]));//a[0]表示的第一行的数组名,数组名被单独放在sizeof内部指的是第一行的元素//4个整形,大小为16个字节//答案:16printf(%d\n,sizeof(a[0]1));//a[0],表示的是第一行的数组名数组名没有别单独放在sizeof内部a[0]表示的是//第一行第一个元素的地址加1是第二个元素的地址是地址就是4/8//答案:4/8printf(%d\n,sizeof(*(a[0]1)));//a[0],表示的是第一行的数组名数组名没有别单独放在sizeof内部a[0]表示的是//第一行第一个元素的地址加1是第二个元素的地址,对第一行第二个元素解引用得到//第一行第二个元素类型为int 大小为4//答案4printf(%d\n,sizeof(a1));//a没有被单独放在sizeof内部二维数组的数组名表示的是数组第一行的地址加1得到//第二行的地址只要是地址就是4/8//答案4/8printf(%d\n,sizeof(*(a1)));//a没有被单独放在sizeof内部二维数组的数组名表示的是数组第一行的地址加1得到//第二行的地址对第二行的地址进行解引用得到的是第二行第一个元素的地址只要//是地址就是4/8个字节//答案4/8printf(%d\n,sizeof(a[0]1));//a[0]是第一行的数组名a[0]没有被单独放在sizeof内部表示的是第一行第一个元素//的地址对数组名取地址得到的是第一行的地址加1是第二行的元素的地址只要是地//址就是4/8//答案:4/8printf(%d\n,sizeof(*(a[0]1)));//a[0]是第一行的数组名a[0]没有被单独放在sizeof内部表示的是第一行第一个元素//的地址对数组名取地址得到的是第一行的地址加1是第二行的元素的地址对第二行//地址解引用得到第二行第一个元素的地址只要是地址就是4/8//答案:4/8printf(%d\n,sizeof(*a));//*a指的是对第一行的地址解引用得到的是数组第一个元素的地址只要是地址就是4/8//答案:4/8printf(%d\n,sizeof(a[3]));//a[3]指的是第四行的数组名数组名单独出现在sizeof内部表示的是第四行元素的大小//大小为4个整形-16字节//答案:4/8return 0; }回顾: int a[3][4] {0}; printf(%d\n,sizeof(a)); printf(%d\n,sizeof(a[0][0])); printf(%d\n,sizeof(a[0])); printf(%d\n,sizeof(a[0]1)); printf(%d\n,sizeof(*(a[0]1))); printf(%d\n,sizeof(a1)); printf(%d\n,sizeof(*(a1))); printf(%d\n,sizeof(a[0]1)); printf(%d\n,sizeof(*(a[0]1))); printf(%d\n,sizeof(*a)); printf(%d\n,sizeof(a[3]));五.指针笔试题 #includestdio.h int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(a 1);printf( %d,%d, *(a 1), *(ptr - 1));//看下面图解可得*a1是2*(ptr-1)就为5return 0; }图解: struct Test { int Num; char *pcName; short sDate; char cha[2]; short sBa[4]; }*p; //假设p 的值为0x100000。 如下表表达式的值分别为多少 //已知结构体Test类型的变量大小是20个字节 int main() { printf(%p\n, p 0x1); //p1跳过的是一个结构体的大小20个字节 //也就是0x1000000x014 //答案: 0x00110014 printf(%p\n, (unsigned long)p 0x1); //p转换为unsigned long 加1就真的加一 //答案:0x00100001 printf(%p\n, (unsigned int*)p 0x1); //p的类型为unsigned int *加1跳过4个字节 //答案:0x00100004 return 0; }int main() { int a[4] { 1, 2, 3, 4 }; int *ptr1 (int *)(a 1); int *ptr2 (int *)((int)a 1); printf( %x,%x, ptr1[-1], *ptr2); //ptr[-1]相当于*(ptr-1)也就是4((int)a1)还跳过1个字节由下图可知访问内存 //00 00 00 02小端存储-转换成16进制就是-02 00 00 00 //答案4 2 00 00 00 return 0; }#include stdio.h int main() {int a[3][2] { (0, 1), (2, 3), (4, 5) };//逗号表达式最后的结果为逗号表达式的最后一个值的结果所以存的数为//1 3 //5 0 //0 0int *p;p a[0];//是第一行的地址printf( %d, p[0]);//访问的是第一个元素为:1return 0; }int main() {int a[5][5];int(*p)[4];p a;//注意a的类型为int(*)[5]printf( %p,%d\n, p[4][2] - a[4][2], p[4][2] - a[4][2]); //p[4][2]指的是第五行第3个元素按每行四个来算所以是第4*4319个元素 //a[4][2]指的第第五行第3个元素按每行5个计算所以是5*4323个 //对他们分别取地址相减的绝对值是相差元素的个数 // p[4][2] - a[4][2]:-4,用%p打印补码 //1111 1111 1111 1111 1111 1111 1111 1100 //16进制:0xFF FF FF FC //p[4][2] - a[4][2]19-23-4 //-4 //答案:0xFF FF FF FC -4 return 0; }int main() { int aa[2][5] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int *ptr1 (int *)(aa 1); int *ptr2 (int *)(*(aa 1)); printf( %d,%d, *(ptr1 - 1), *(ptr2 - 1)); //由图可知ptr1-1可得是10的地址a1解引用是第二行第一个元素的地址对ptr2-1 //是5的地址对其解引用得到的是5. //答案:10 5 return 0; }图解 #include stdio.h int main() {char *a[] {work,at,alibaba};char**pa a;//一级指针数组的数组名用二级指针进行接收pa;printf(%s\n, *pa);//由图可知打印的是at return 0; }图解: #includestdio.h int main() {char *c[] {ENTER,NEW,POINT,FIRST};char**cp[] {c3,c2,c1,c};char***cpp cp;printf(%s\n, **cpp);//对cpp前置解引用得到的是c2再解引用得到POINT首元素的地址//打印就是:POINTprintf(%s\n, *--*cpp3);//我们要注意上面的对cpp已经产生了影响所以再cpp指的是c1所以对cpp//解引用得到的是c1指的是NEW首元素的地址再减减得到的是ENTER的地址//解引用得到的是ENTER首元素的地址再加3得到的是E的地址。//所以最后为ERprintf(%s\n, *cpp[-2]3);//这里再看cpp指向了c1但由于c1在上一段代码已被更改成c*(cpp-2跟cpp[-2]//一样所以指向的是c3再解引用得到的是FIRST的首字母的地址加3的到的是S的地址//解引用得到的是STprintf(%s\n, cpp[-1][-1]1);//由于上面的cpp[-2]并没有更改cpp的值所以这里的cpp指向c1但由于c1在//上一段代码已被更改成c因为cpp[-1][-1]可以解释为*(*(cpp-1)-1)cpp-1指的//是c2减1得到的是c1解引用得到的是NEW的首字符的地址加1得到的是E的地址//所以最后为EWreturn 0; }图解:
http://www.sczhlp.com/news/157752/

相关文章:

  • 电器企业网站建站区块链网站开发资金
  • 宁波制作网站企业学校网站建设策划
  • 河北怀来县建设局网站简单网站开发流程
  • 无法访问此网站是什么原因深圳网站开发团队
  • 网站开发维护运维上海自助建站费用
  • 桂林北站官网开办网络公司
  • 南京网站开发价格上海建设集团网站
  • 网站建设一般多少费用台州网站建设费用
  • 建筑业资质查询网站网站建设小程序山东
  • wordpress 新闻采集站自己网站建设基本流程
  • 北京网站设计与制作百度搜索推广怎么做
  • 网站建设捌金手指下拉十一东莞网站优化如何
  • 建设银行的官方网站积分商场广州做网站优化公司报价
  • 正规网站建设学习网公司哪家好网站现状如何分析
  • 网站建设公司排行杭州北京企业网站开发多少钱
  • 做网站怎么开发程序企业年报系统
  • 成都响应式网站建设公司如何做企业网站步骤
  • 南宁市兴宁建设局网站wordpress添加字段
  • 公司网站更换域名流程免费网站为何收录比较慢
  • 网站建设哪些是需要外援的问题个人博客网站制作论文
  • 做废塑料生意那个网站最专业wordpress网站设计作业
  • 如何设计出优秀、健壮且易于维护的API——关于HTTP状态码与业务逻辑状态码的处理 - 浪矢
  • GeekDoc 中文系列教程 2025.10
  • 贪心算法 | 每周8题(一) - 指南
  • 淘宝客怎么做自己的网站网站建设上传宝贝xamp
  • 网站挂马 屏蔽站长的ip建设局的证件在哪个网站查
  • 浏阳网站建设卷云网络企业网站开发课程培训
  • 应用数据库网站开发广东东莞邮编
  • 网站更改关键词宜都网站建设
  • 网站建设优化之优化关键字我想做网站 怎么做呢