C语言笔记(结构体,结构体指针,String等)

1.C语言里面没有String类型

可以用char str[];  来定义

c语言包含了赋值:strcpy(),拼接:strcat()函数操作字符串

    char str1[20] = "hello";
    char str2[] = "world";
    char str3[20];

    // 复制字符串,把str1中字符串赋值给str2
    strcpy(str3, str1);
    printf("str3: %s\n", str3);

    // 拼接字符串
    strcat(str3, " ");
    strcat(str3, str2);
    printf("str3: %s\n", str3);

2.结构体struct

考研中常用typedef struct定义结构体

#include
#include
typedef struct {
	char name[20];
	char sex[10];
	int height;
	int weight;
}human;//别名,定义时候可以省略struct

int main() {
	human h1;
	h1.height = 180;
	h1.weight = 130;
	strcpy(h1.name, "帅哥");
	strcpy(h1.sex, "男");
	printf("%s\n", h1.name);
	printf("%s\n", h1.sex);
	printf("%d\n", h1.height);
	printf("%d\n", h1.weight);
	return 0;
}

C语言笔记(结构体,结构体指针,String等)_第1张图片

3.结构体指针

考研(结构体指针)

在这两个声明中,typedef关键字用来给struct LNode定义一个新的类型名,即LNode。同时,还定义了一个指向struct LNode类型的指针类型名为LinkList。
这两个声明的区别在于,第一个声明是用LNode来定义结构体类型和结构体指针类型,而第二个声明则是用LinkList来定义结构体指针类型。这两种方式定义的类型名称可以互相替换使用,但是,它们对于编程风格和代码可读性的影响是不同的。


第一种声明方式可以在定义结构体变量时直接使用LNode作为变量类型名,这样可以使代码更加简洁易读。例如:

LNode node1;        // 定义LNode类型的结构体变量
LNode *p = &node1;  // 定义LNode类型的结构体指针变量

第二种声明方式虽然可以减少类型名称的使用,但是也可能会使代码变得更加难以理解。例如:

LinkList node1;         // 定义LinkList类型的结构体指针变量
LinkList node2 = NULL;  // 另一种定义方式,LinkList可以看作是LNode*

因此,选择使用哪种方式声明结构体类型和指针类型,应该根据代码的实际情况和个人编程习惯来决定。

#include
#include 
using namespace std;

typedef struct LNode{
	int data;
	 struct LNode* next;
}LNode, *LinkList;

int main()
{
	LinkList L = (LinkList)malloc(sizeof(LNode));
	LNode* L2 = (LNode*)malloc(sizeof(LNode*));
	L2->data = 1222;
	L->data = 12;
	L->next = L2;
	printf("%d\n", L->next->data);
	cout << L->next->data << endl;
	//cout << L->next->data << endl;
	system("pause");
	return 0;
}

正常学习结构体指针

是指向结构体的指针变量。它允许程序员使用指针来访问和操作结构体中的数据成员。以下是一些有关结构体指针的常用操作:
(1)声明结构体指针变量
要声明结构体指针变量,必须在指针变量名前加上星号(*)符号,并将其指向结构体类型。例如:

struct Person {
    char name[50];
    int age;
    float height;
};

struct Person *personPtr;

这将声明一个名为personPtr的指向Person结构体类型的指针变量。

(2)分配内存
在使用结构体指针之前,必须先为其分配内存空间。可以使用C标准库函数 malloc() 来动态分配内存。例如:

personPtr = (struct Person*) malloc(sizeof(struct Person));

这将为‘personPtr’指向的结构体分配内存空间。可以使用‘sizeof’运算符来计算结构体类型的大小。

(3)访问结构体成员变量
要访问结构体指针所指向的结构体中的成员变量,可以使用箭头运算符(->)。例如:

strcpy(personPtr->name, "Tom");
personPtr->age = 25;
personPtr->height = 1.8;

这将为personPtr指向的Person结构体变量的name,age和height成员变量分别赋值。

(4)释放内存
使用完结构体指针后,必须释放它所指向的内存空间,以避免内存泄漏。可以使用free()函数来释放动态分配的内存。例如:

free(personPtr);

这将释放personPtr指向的内存空间。

以上是一些基本的结构体指针操作。结构体指针还可以作为函数参数和返回值使用,以便在函数之间传递结构体数据。

你可能感兴趣的:(c语言,笔记,c++)