关于sizeof 和strlen 的计算的知识总结
来源:互联网 发布:见一页而知岁月将暮 编辑:程序博客网 时间:2024/05/16 17:16
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<assert.h>int main(){ int a[3][4] = { 0 }; printf("%d\n", sizeof(a));// a单独放在sizeof内部 代表整个数组 48 printf("%d\n", sizeof(a[0][0])); //代表首元素的地址 4 printf("%d\n", sizeof(a[0])); //表示第一行 16 printf("%d\n", sizeof(a[0] + 1));// 表示第一行 第二个元素 4 printf("%d\n", sizeof(a + 1)); //第一行第二个元素 4 printf("%d\n", sizeof(&a[0] + 1)); // 第二行 4 printf("%d\n", sizeof(*a));//16 表示第一行的元素 printf("%d\n", sizeof(a[3]));//16 数组后面一行空间 int num = 10; char *pc = (char *)# int *pi = # printf("%p\n", &num); //;num的地址 printf("%p\n", pc); //num 的地址 printf("%p\n", pc + 1); //num的地址往后走一个字节 printf("%p\n", pi); //num 的地址 printf("%p\n", pi + 1); //num的地址往后走四个字节 printf("\n"); char *p = "abcdef"; printf("%d\n", sizeof(p)); //整个素组的地址 4 printf("%d\n", sizeof(p + 1));// 指向第二个元素的地址 4 printf("%d\n", sizeof(*p)); //第一个字符 1 printf("%d\n", sizeof(p[0]));//第一个字符 1 printf("%d\n", sizeof(&p)); //整个数组的地址 4 printf("%d\n", sizeof(&p + 1));//指向p数组后面的空间的地址 4 printf("%d\n", sizeof(&p[0] + 1));//第二个元素的地址 4 printf("%d\n", strlen(p));// 6 printf("%d\n", strlen(p + 1));//从第二个元素开始向后找 5 printf("%d\n", strlen(*p));//err 参数为指针 printf("%d\n", strlen(p[0]));//err printf("%d\n", strlen(&p));//x 整个数组的地址 但是不知道/0在哪 x printf("%d\n", strlen(&p + 1));//指向p后面空间的地址 x printf("%d\n", strlen(&p[0] + 1));//第二个元素的地址 x char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' }; printf("%d\n", sizeof(arr)); //arr代表整个数组 6 printf("%d\n", sizeof(arr + 0)); //第一个元素的地址 4 printf("%d\n", sizeof(*arr));//第一个元素 1 printf("%d\n", sizeof(arr[1]));//第二个元素 1 printf("%d\n", sizeof(&arr));//取地址整个数组 4 printf("%d\n", sizeof(&arr + 1));//指向数组之后的空间的地址 4 printf("%d\n", sizeof(&arr[0] + 1));//指向第二个元素的地址 4 printf("%d\n", strlen(arr));//找不到\0,求出的是随机值 printf("%d\n", strlen(arr + 0)); //x printf("%d\n", strlen(*arr));//err 参数是指针 printf("%d\n", strlen(arr[1])); //erro参数是指针 printf("%d\n", strlen(&arr));//x printf("%d\n", strlen(&arr + 1));//指向下一个数组 x-6 printf("%d\n", strlen(&arr[0] + 1));//第二个元素的地址 x-2 int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a));//数组名放在sizeof后面 代表整个数组 16 printf("%d\n", sizeof(a + 0));//a不是单独放在sizeof后 代表首元素的地址 4 printf("%d\n", sizeof(*a));//a是首元素的地址 解引用是1 一个整形4个字节 4 printf("%d\n", sizeof(a + 1));//是第二个元素的地址 地址的字节为四 4 printf("%d\n", sizeof(a[1]));//表示下标为1的元素的地址 4 printf("%d\n", sizeof(&a));//取地址数组名代表整个数组的地址 4 printf("%d\n", sizeof(&a + 1));//指向整个数组后面的空间的地址 4 printf("%d\n", sizeof(&a[0]));//数组第一个元素的地址 4 printf("%d\n", sizeof(&a[0] + 1));// 数组第二个元素的地址 4 system("pause"); return 0;}
阅读全文
1 0
- 关于sizeof 和strlen 的计算的知识总结
- 关于数组的 sizeof和strlen 的一些计算
- sizeof和strlen的总结
- sizeof 和strlen的总结
- 了解sizeof和strlen以及关于数组的相关计算
- 关于数组,sizeof(),strlen的计算问题
- sizeof()与strlen()函数计算的总结
- 关于sizeof和strlen的区别总结举例
- 关于sizeof和strlen的区别
- 关于strlen和sizeof的陷阱
- 关于sizeof和strlen的区别
- 关于sizeof 和 strlen的区别
- 关于strlen()和sizeof的题目
- 关于sizeof 和 strlen的区别
- 关于sizeof和strlen的使用
- 关于sizeof 和strlen 的用法
- 关于sizeof和strlen的区别
- 关于strlen和sizeof的区别
- fullpage插件的基本使用
- JavaScript常用属性
- Android 6.0 悬浮窗默认关闭解决方案
- 工厂模式
- java的正则匹配
- 关于sizeof 和strlen 的计算的知识总结
- java I/O系统(5)-Buffer类
- 百宝云企业版正式进入封测阶段
- 实现背景颜色改变
- shiro学习笔记1——基本概念
- tablayout增加选择tab 的事件.
- 一起来学习 系统封装接口层- CMSIS-OS 之freeRTOS
- zookeep基本操作
- 338. Counting Bits