在C语言中,
_CRT_SECURE_NO_WARNINGS
是一个宏定义,它通常与Microsoft Visual Studio(MSVC)编译器一起使用,用于禁用一些与安全相关的警告。这些警告通常与C标准库中的某些函数的安全性问题相关,特别是在处理字符串和内存时。
_CRT_SECURE_NO_WARNINGS
宏定义的作用是在编译时禁用与这些不安全函数使用相关的警告。通过在代码中的某个位置(通常在包含任何标准库头文件之前)定义这个宏,你可以告诉编译器忽略这些警告,从而避免在编译时看到大量的与安全相关的消息。#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h>
数据类型
数据类型就是为了更好的内存管理
typede
/**定义结构体**/
//方法一
struct Person
{
char name[64];
int age;
};
typedef struct Person myPerson;
//方法二
typedef struct Person
{
char name[64];
int age;
}myPerson;
/**定义变量**/
//方法一,无法给两个变量都赋值为char *
void test()
{
char * p1,p2;
cout << typeid(p1).name << endl;//char *
cout << typeid(p2).name << endl;//char
}
//方法二
typedef char * PCHAR
void test()
{
PCHAR p1,p2;
cout << typeid(p1).name << endl;//char *
cout << typeid(p2).name << endl;//char *
}
/**有利于程序移植性**/
typedef long long mytype_t;
void test()
{
mytype_t a;
}
void
void 无类型,void * 无类型指针,无类型指针可以指向任何类型的数据
void不能直接定义变量,因为编译器不知道分配多少内存给变量
当定义一个变量,编译器必须要直到分配多少内存,否则报错
/**对函数负担会的限定顶,对函数参数的限定**/
void test()//函数返回值为void,即没有返回值
{
cout << "this is test" << endl;
}
//test1无参数
int test1(void)
{
return 10;
}
/**无类性指针**/
//所有类型指针的祖宗
//void * 主要用于数据结构的封装
void test()
{
void *p = NULL:
int *PInt = NULL;
void *PVoid = PInt;//不报错
}
sizeof操作符
能够告诉我们编译器为某一特定数据分配了多少大小的空间和内存,大小一字节为单位
返回的是给变量分配的空间,而不是它所使用的空间
返回的数据结果类型是unsigned int
/**返回的是变量实际所占空间的大小,单位字节**/
#pragma pack(1)//让结构体的数据对齐
struct Person
{
char a;
int b;
}
void test()
{
printf("int size:%d\n",sizeof(int));//int size:4
double a = 3.14;
printf("a size:%d\n",sizeof a);//a size:8
printf("Person size:%d\n",sizeof(struct Person));// Person size:8未加对其魔术#pragma pack(1),加了之后的结果Person size:5
}
/**sizeof返回结果为unsigned int**/
void test() //大于0,因为大部分编译器在编译无符号和有符号运算结果的时候一般结果都是无符号的,因此不会是小于0
{
unsigned int a = 10;
if(a - 20 > 0) printf("大于0");
else printf("小于0");
}
/**sizeof计算数组**/
//当我们使用它sizeof去求数组的大小时,数组传入函数里面时数组的大小已经不是原本数组的大小了,而大小是指向数组首元素的指针
int caculateArraySizer(int arr[])
{
return sizeof(arr);
}
void test()
{
int arr[] = {
1,2,3,4,5,6,7};
printf("sizeof arr:%d\n",sizeof(arr));//sizeof arr:28
ptintf("sizeof arr:%d\n",caculateArraySizer(arr));//sizeof arr:4【大小退化为指向数组首元素的指针,指针大小为4个字节】
}
变量的间接赋值
//首先拿到变量的地址,确保指针p指向的地址还是能用的
int *p = &a;
//在对指针p指向的地址也就是a进行赋值
*p= 20;
str