c语言定义指针类型需注意事项

1)在定义说明语句中,指针变量名之前的星号“*“是指针变量的修饰符,也就是说它所修饰的变量是指针变量。

2)指针变量是用它们所指向的对象类型来区分的。如定义 int *ip,类型int并不是指针的类型,而是指针所指向变量的类型。

3)尽管各种指针变量所保存的是内存中的地址,但不同类型的指针是不能互换或者互相赋值的。

4)从语法上讲,指针变量可以指向任何类型的对象,可以指向数组,别的指针,函数,结构体等,所以可以表示一些复杂的数据类型,如树,图,这是基本类型中没有的。

5)指针变量自身也占用内存,而且所有指针占用内存的大小是相同的,也就是说,不管指向什么类型,它们占用内存的字节数都一样,而且要能表示内存中最大地址,32位机4字节,64位机8字节。

原文地址:https://www.cnblogs.com/wzyuan/p/9919902.html

时间: 2024-10-16 11:21:37

c语言定义指针类型需注意事项的相关文章

对于C语言复杂指针类型的分析

转载自:http://www.slyar.com/blog/complicated-point-type.html int p; p是一个普通的整型变量. int *p; 1.p与*结合,说明p是一个指针.2.*p与int结合,说明指针所指向的内容的类型是整型的. 所以p是一个返回整型数据的指针. int p[5]; 1.p与[]结合,说明p是一个数组.2.p[5]与int结合,说明数组里的元素是整型的. 所以p是一个由整型数据组成的数组. int *p[5]; 1.p与[]结合(因为其优先级比

Delphi中的指针类型

首先讲讲指针类型在delphi中是怎么定义的: 指针类型的定义语法 type <指针类型标识符>=^<基类型>: 指针指向动态变量的类型是由^符后的基类型来标识,^符号也就是指针类型,而C++中是用*符号来表示指针类型. 举例说明 type student = record    //定义个记录类型,与c++中的结构类型类似 name:string[8]; number:integer; sex:(b,g); age:integer; end; per = ^student;  /

浅析c++和c语言的enum类型

1.先看c语言枚举类型 1.c语言定义枚举类型,每一个枚举元素都是一个整数2.注重数据类型,没有数据类型限定3.相邻枚举元素相差整数4.可以通过整数访问,不够安全 2.上代码: 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 /* 5 6 1.c语言定义枚举类型,每一个枚举元素都是一个整数 7 2.注重数据类型,没有数据类型限定 8 3.相邻枚举元素相差整数 9 4.可以通过整数访问,不够安全 10 11 */ 12 enum color

指针初级(定义, 初始化, 重指向, 注意事项)

大家好, 今天我们来学习C语言中的指针. 可能大家都听过这么一句话: C语言中其它我学得都很好, 就是指针这一块学得不是太明白, 那么你不如告诉我你没有学过C语言. 这么一句话突出了指针这个概念在C语言当中的重要性. 还有的同学说, 我听别从说C语言当中的指针好难, 特别难理解, 很难学会.那么我告诉大家的是, 指针没有什么难的地方, 那只是你们潜意识这么认为的, 通过今天这节课的学习, 我相信大家都能学会指针, 并且会用指针. 好, 下面开始指针的学习. 在学指针之前, 我先给大家普及一下,

C语言不完全类型与延迟定义

一直以为我的C语言学的还可以,虽说不是出神入化,但是至少比较熟悉吧.但是前一段时间看了一篇微信推文,再百度了一下C语言不完全类型.发现我居然C语言不完全类型和用途甚广的延迟定义都没概念.这两天仔细查阅了相关概念并用代码实验了一下. 本文结构如下: C语言不完全类型概念介绍 一个故事 延迟定义的优点 思考- C语言不完全类型 不完全类型也就是不知道变量的所有的类型信息.比如可以声明一个数组,但是不给出该数组的长度:声明一个指针,但是不给出该指针的类型:声明一个结构体类型,但是不给出完整的结构体定义

C语言 函数指针定义三种方式

//函数指针 #include<stdio.h> #include<stdlib.h> #include<string.h> //函数指针类型跟数组类型非常相似 //函数名就是函数的地址,函数的指针,对函数名进行&取地址操作,还是函数名本身,这是C语言编译器的特殊处理 void test(int a){ printf("a=%d\n",a); } void ProtectA(){ //定义函数类型 typedef void(FunType)(

用typedef定义函数指针类型(转)

typedef可以用于定义函数指针类型: [语法]typedef <返回类型> (*<函数类型名>)(参数表)typedef <返回类型> (<类名>::*<函数类型名>)(参数表) [用途]1.可以用来定义该函数类型的函数指针,就不用每次使用函数指针都要写一次函数原型了:2.有了类型名,就可以使用在容器里面,譬如map<int, 类型名>,用于实现灵活的函数调用. [示例] 例1:typedef void (*PF)(int x);

c语言定义函数指针和typedef简写

二种方法来定义函数指针 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<Windows.h> 4 5 int add(int a, int b) 6 { 7 return a + b; 8 } 9 10 //void msg(char s[]) 11 //void (*p)(char s[]) 函数指针的定义方法 12 //void (*)(char *s) 函数指针的类型 13 14 void msg(char

C语言 详解多级指针与指针类型的关系

//通常意义上,指针类型指的是‘指针值’的类型,而不是‘指针’的类型 //V推论①:变量的步长只与变量的类型有关 //普通变量名是一段内存空间的标识,普通变量名代表的是一段内存空间, //对于复杂变量(例如指针):通常的指针的步长准确来说是指‘指针值’的步长,而不是指‘指针本身’的步长,指针本身的步长永远是4, //我们通常说的指针类型往往指的是‘指针值’的类型,,而不是‘指针’的类型 //而指针类型就是一个占4个字节大小内存空间的一种类型(从来没有人定义过指针类型,人们定义的都是‘指针值’的类