栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础一

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础一

c语言相关基础问答 C语言中,NULL,NUL,null,三者区别?
  • NULL 空指针常量,展开后一些常见值是0、((void *)0) (0L)
  • NUL 字符名字 C语言中就是‘’这个字符,叫做空字符
  • null 一种东西的统称,空指针就是null pointer 空字符就是null charcater
定义指针为0

指向指针的指针可以为0,相当于程序吧二进制字符串当作指针
但是,*(0) 位置在某些情况下真是一个指针。当操作系统访问该地址时,cpu会告诉操作系统该位置不能触碰,出现该内存不能read的报错。

saferFree 会把野指针赋值为0,为了早点发现运行错误。

总结各种指针
  • void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*类型。
  • NULL指针:是一个标准规定的宏定义;#define NULL ((void *) 0) 用来表示空指针常量;
  • 零指针:指针值为0,零值指针,没有存储任何内存地址的指针;可以使任意一种指针类型,eg:void * ;int * ;double *;
  • 空指针:指针赋值为0;0*7;3-3等之后,指针即变成空指针;即:空指针不指向任何实际的对象或者函数;NULL指针和零指针都是空指针。
  • 野指针:指向垃圾内存的指针;(1)指针变量没有初始化(2)指针被delete或者free之后没有置为空(3)指针操作超越了变量的范围
  • 悬垂指针:指向曾经存放对象的内存,但是该对象已经不存在了;delete操作完成后的指针就是悬垂指针,此时需要将指针置为0变为零值指针;

指针的类型。
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:
(1)int *ptr; //指针的类型是int *
(2)char *ptr; //指针的类型是char *
(3)int **ptr; //指针的类型是 int **
(4)int (ptr)[3]; //指针的类型是 int()[3]
(5)int *(*ptr)[4]; //指针的类型是 int ()[4]
我们可以这样理解,一个基本的数据类型(包括结构体等自定义类型)加上” * “号就构成了指针的类型。这个类型定义的变量大小是一定的,与” * “号前面的数据类型无关,” * “号前面的数据类型只是说明指针所指向的内容里存储数据的类型。

-> 是什么意思

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.

举个栗子

struct Data
{
   int a,b,c;
};              
struct Data * p;
struct Data A = {1,2,3};
int x;
p = &A ; 
x = p->a;
         
memcpy(内存拷贝函数)

注意:

1.函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。

2.这个函数在遇到 ‘’ 的时候并不会停下来。

3.如果source和destination有任何的重叠,复制的结果都是未定义的。(所以源和目的最好不要一样)

4.VS里面memcpy超额完成了,也有memmove的功能

举个栗子

#include 
#include 
struct {
	char name[40];
	int age;
} person, person_copy;
int main()
{
	char myname[] = "Pierre de Fermat";
	
	memcpy(person.name, myname, strlen(myname) + 1);
	person.age = 46;
	
	memcpy(&person_copy, &person, sizeof(person));
	printf("person_copy: %s, %d n", person_copy.name, person_copy.age);
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号