【C语言】基础笔试题1

 1.sizeof 与 字符数组的大小

#include <iostream>
using namespace std;

int  main()
{	
	char * str1= "0123456789";
	// char * str1= "0123456789";的等效写法如下
	char  str11[] = "0123456789", *str111;
	str111 = str11;
	
	char  str2[] = "0123456789";
	char  str3[100] = "0123456789";

	printf("%d\n", sizeof(str1));  // 4
	printf("%d\n", sizeof(str2));  // 11
        printf("%d\n", strlen(str2));  // 10
	printf("%d\n", sizeof(str3));  // 100
}	

数组所占用内存的大小:定义的类型所占的字节数  X  数组长度 。

字符数组所占用空间:结尾自动补‘\0’,所占用内存字节数+1。【参考链接】

2. 指针域字符数组[参考链接]

#include <iostream>
using namespace std;
char * GetMemory()
{
	char pBuf[] = "hello!";
	return pBuf;
}

int  main()
{
	char *str = NULL;
	str = GetMemory();
	printf("%s\n", str);
	return 0;
}

会出现乱码,编译错误

 

3.指针变量未初始化

#include <iostream>
using namespace std;

int  main()
{
	int *ptr;
	*ptr = 1234;
	printf("%d\n", *ptr);
	return 0;
}

 4.请写出函数指针,函数返回指针

指针可以指向一个变量,也可以指向一个函数,当然也可以通过指针调用指向的函数。 

(1)定义指向函数的指针变量   : 数据类型  (* 指针变量名)() ; 例如 int (*pf)();

(2)指向函数,然后调用欧冠:(* 指针变量名)(参数)  ;例如 sum= (*pf)(2,3);

void (*fun)(参数)  //函数指针
void * fun()   //函数返回值指针 

5.使用 malloc时 的错误 【参考链接】

#include <iostream>
using namespace std;
typedef struct _data_t{

	char name[20];
	int value;
}data_t;

int  main()
{
	data_t * pData;
	pData = (data_t *)malloc(sizeof(data_t));
	return 0;
}

错误原因:malloc申请内存后没有检测返回值。因为当无法获得符合要求的内存块,malloc函数会返回NULL,因此在调用malloc动态申请内存块时,一定要进行返回值的判断,否则容易出现内存泄露。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾小蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值