20190705总复习第一课

1.strlen与sizeof区别
strlen求长度,到‘\0’结束,是函数。
sizeof求大小,包括‘\0’,只是运算符。

char str[] = {'h','e','l','l','o'};
cout<<strlen(str)<<end;//?为随机,因为str没有初始化,所以不会遇到'\0'
cout<<sizeof(str)<<endl;//5

char str[10] = {'h','e','l','l','o'};
cout<<strlen(str)<<endl;//5,因为初始化过后,‘o’后面全为0,包括全局变量同样如此。
cout<<sizeof(str)<<endl;//10

char str[10] = {'h','e','0','l','l','o'};
cout<<strlen(str)<<endl;//6 	当'0'是0时,此长度为2;即'\0' = 0;
cout<<sizeof(str)<<endl;//10
int val = "01234567"[3];//取第三个数,通用写法,这里取得是字符的值,想要变为int,需要(val-‘0’)
void main()
{
	char str[10];
	for (int i = 0; i < 5; ++i)
	{
		str[i] = 'a' + i;
	}
	cout << strlen(str) << endl;//随机值,因为str数组没有初始化
	cout << sizeof(str) << endl;//10
}

char str[10];
void main()
{
	for (int i = 0; i < 5; ++i)
	{
		str[i] = 'a' + i;
	}
	cout << strlen(str) << endl;//5,当生命为全局变量时,自动赋初值为0;
	cout << sizeof(str) << endl;//10
	
}

用变量a给出下面定义
1.一个整型数
int a;
2.一个指向整型数的指针
int *a;
3.一个指向指针的指针,它指向的指针是指向一个整数
int **a;
4.一个有10个整型数的数组
int a[10];
5.一个有10个指针的数组,该指针是指向一个整型数的
int *a[10]
6.一个指向有10个整型数数组的指针
int (*a)[10]
7.一个指向函数的指针,该函数有一个整型参数并返回一个整型
int (*a)(int )
8.一个有10个指针的数组,该指针指向一个函数,
该函数有一个整型参数并返回一个整型数
int (*a[10])(int)

进制转换

二进制
int value;
stack<int> s;
if(value == 0)
{
	s.push(0);
}
else
{
	while(value)
	{
		s.push(value%2);
		value /= 2;
	}
}
while(!s.empty())
{
	cout<<st.top();
	s.pop();
}
cout<<endl;

十六进制
stack<char >s;
if(value == 0)
{
	s.push('0');
}
else
{
	int mod;
	while(value)
	{
		s.push("0123456789ABCDEF"[value%16]);
		value /= 16;
	}
}
while(!s.empty())
{
	cout<<s.top();
	s.pop();
}

字节对齐

typedef struct test
{
	char a;//1 + 7
	double b;//8
	int c;//4 + 4
	//
}Test;
//前要和后对齐,最后结果需要为最大值得倍数。
typedef struct Test
{
	short a;       //2+6
	struct
	{
		int b;     //4 + 4
		double c;  //8
		char d;    //1 + 7
	};
	long e; //4 + 4
}Test;
struct 加名字是类型,不加名字是变量
不能跨类型也不能跨字节
//字节对齐,空间换时间
类型不占大小空间(struct t)

发布了39 篇原创文章 · 获赞 10 · 访问量 759

猜你喜欢

转载自blog.csdn.net/weixin_43393776/article/details/94762603
今日推荐