前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言深度解剖 (一)

C语言深度解剖 (一)

作者头像
franket
发布2021-10-18 10:16:34
3150
发布2021-10-18 10:16:34
举报
文章被收录于专栏:技术杂记

前言

C语言的水深不见底,好在一些前辈们已经将很多雷区探了一遍

这里分享一下我在学习 《C语言深度解剖》 过程中的一些笔记和心得


概要


sizeof

sizeof是关键字,而不是函数

代码语言:javascript
复制
main()
{
	int i=0;
	int a=sizeof(int); // 4 ,因为int类型占4个字节
	int b=sizeof(i); // 4 ,因为i为int类型,占4个字节
	int c=sizeof i; //4  这个写法也是可以的与上面的相同
//	int d=sizeof int; //error C2059: syntax error : 'type'
}

Tip: 在VC++6.0中,我们可以使用 F10 开启debug的观察模式, F11 可以逐条执行代码,借此可以观察变量值在整个过程中的变化情况,而不必使用打印语句,并且这样观察的结果更切近实际情况,F9 可以安插断点,让程度一口气执行到断点的地方停住

代码语言:javascript
复制
#include <stdio.h>

int b[100];
void fun(int b[100])
{
	int x=sizeof(b); //4,b此时只是一个指针,指针在32位平台中为4个字节
}

void main()
{
	int *p=NULL,a[100];
	int x=sizeof(p); //4,指针在32位平台中为4个字节
	int y=sizeof(*p); //4,int型指针所指内容为int型整数,int型整数为4字节
	int z=sizeof(a); //400,a为int型数组的首地址,100个元素,共400字节
	int u=sizeof(a[100]); //4,第100个元素还是整型,占4字节,虽然这个元素因为越界并不存在
	int v=sizeof(&a); //400,a为int型数组的首地址,100个元素,共400字节
	int w=sizeof(&a[0]); //4,第0个元素还是整型,占4字节
	int r=sizeof(b); //400,b为int型数组的首地址,100个元素,共400字节
	fun(a);
}

signed/unsigned

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main()
{
	char a[1000];
	int i,b;
	for (i=0;i<1000;i++)
	{
		a[i]=-1-i;
	}
	b=strlen(a); //255,因为遇到了'\0' , '\0' 的二进制码为 00000000 , 就成为了字符串的终结
	return 0;
}

32位平台里:

signed int 型范围为 -2^31 ~ 2^31-1

char类型表示范围为 -2^7 ~ 2^7-1

unsigned int 型范围为 0~ 2^32-1

char类型表示范围为 0 ~ 2^8-1

编译器缺省情况下数据为signed类型

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main()
{
	unsigned i;
	for(i=9;i>=0;i--)
	{
		printf("%u\n",i);
	}
}

这段代码会陷入死循环,因为i永远不可能小于零


void

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main()
{
	
	float *p1;
	int *p2;
	void *p3;
	//p1=p2; //warning C4133: '=' : incompatible types - from 'int *' to 'float *'
	p1=(float*)p2; //经过转化是可以的
	p2=(int*)p1; //经过转化是可以的
	//p2=p1; //warning C4133: '=' : incompatible types - from 'float *' to 'int *'
	p3=p1; //空指针可以接受其它类型指针值
	p3=p2; //空指针可以接受其它类型指针值
}

原文地址

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 概要
    • sizeof
      • signed/unsigned
        • void
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档