c和指针

时间:2024-10-20 21:07:00编辑:阿奇

求助一个关于C语言的基础知识,指针的

你的说法有错误。看例子吧。char * a[]={"china", "usa", "russia"};
C语言没有字符串类型。a是一个字符指针数组。把3个字符串放到常量区,返回它们的地址,放到数组中。数组名被编译成指向首元素的地址常量。
a指向元素a[0]。而a[0]是char *型的,所以a是char **型的。相似地,命令行参数argv常常被写成char * argv[],当然也可以写成char * * argv。(数组名作为形参,其实是指针变量。argv的值可以改变,当然这一般没有意义,除了你想抛掉argv[0]那个程序名参数。)

由于a代表了数组,所以&a的类型是char * (*)[3]型。这种类型是指向数组的指针,指向的数组中应该有3个元素,每个元素又是char *型。

至于char * p = a+1; 和 char p; p=a+1;
等号左右两边类型肯定不匹配,编译时会有警告。也许你是写错了。
也许你说的a,是字符数组,而非字符串的数组。
char a[]={"china"};
那么char * p = a+1;是对的。a是char *型。指向首元素'c'。

char p; p=a+1;是错的。等号两边类型不一致。警告而已,毕竟字符和地址都是数值。


c语言指针知识点总结

1.指针的使用和本质分析(1)初学指针使用注意事项 1)指针一定要初始化,否则容易产生野指针(后面会详细说明); 2)指针只保存同类型变量的地址,不同类型指针也不要相互赋值; 3)只有当两个指针指向同一个数组中的元素时,才能进行指针间的运算和比较操作;4)指针只能进行减法运算,结果为同一个数组中所指元素的下标差值。(2)指针的本质分析 ①指针是变量,指针*的意义: 1)在声明时,*号表示所声明的变量为指针。 例如:int n = 1; int* p = &n; 这里,变量p保存着n的地址,即p&n,*pn 2)在使用时,*号表示取指针所指向变量的地址值

C语言中的指针是什么意思?

表示成员选择(指针),选择结构体的成员变量。1、结构:运算符 -> 是指向结构体成员运算符,结合方向为自左向右。2、用法:对象指针->成员名。举例说明如下:扩展资料:C语言指针的必要性。指针解决了一些编程中基本的问题:1、指针的使用使得不同区域的代码可以轻易的共享内存数据。当然也可以通过数据的复制达到相同的效果,但是这样往往效率不太好,因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节或者其他可能)。2、指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。3、有些操作必须使用指针。如操作申请的堆内存。还有:C语言中的一切函数调用中,值传递都是“按值传递”的,如果要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。参考资料:百度百科--指针

c语言指针是什么

  1、c语言指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址。指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。

  2、因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

  3、再打个比方:有个人让你去麦当劳帮我买个雪糕,那么麦当劳是这个变量a,但是那个人现在把麦当劳所在的地址写在纸上给你,那么这张纸就可以看做一个指向麦当劳的指针。


C语言中的指针到底有什么用

所有变量值保存在内存中,而每个内存都有一个地址,所谓地址就是一个整数编号,如同门牌号码用于定位(专业术语叫寻址),一个地址对应一个字节(8bit)的内存单元。

如今的编译器,一个整数int类型的值占用32位bit,也就是4字节,编译器将第一个字节的编号定义为该整数的地址,由于保存地址的变量就像一个箭头指向某地址,而称为指针变量。

int a =10; //定义一个整数变量a,对其赋值10
int *p =&a;//定义一个指针变量p,对其赋值a的内存地址,&符号意思为引用跟随其后的变量地址。

cout <<a<<endl; //输出 a的值:10
cout << p << endl ;// 输出p的值:XXXXX 其实为a的地址,该地址由编译器和运行时确定。
cout << *p <<endl; //输出p指向的地址中的值:10,也就是a的值,*星号放在变量前面意思就是取该变量中的地址所指内存中的值。
读取过程为:p的值(a的地址)->寻址->取值

由于指针是一个变量的首个字节的地址,所以要告诉编译器被指地址包含连续多少个字节,因此指针也有类型。比如上面例子中声明了p指针是个整数指针,这样编译器知道p指向一个4字节的内存块。

你可以将指针变量看做一般的整数变量来理解,用来保存一个整数(地址是个整数),只是,该整数代表着某地址,在这里是a的地址。

在C/C++中很灵活,但是也很危险,也很难学,如果指针指向错误的地址会引起程序崩溃,因此在C#中已经被微软封装了,但内部还是有指针的。

如果有必要,C#中也可以使用指针,使用非安全代码,在项目生成选项卡中勾选“允许非安全代码”,然后就可以使用指针了,不过不建议这么做。
unsafe
{
int a = 10;
int* p=&a;
}


C语言的指针有什么优缺点?

1、指针的优点是标识一块内存。电脑内存上的每一个字节都具有一个编号,称为地址(可以简单理解为指针),任何读写内存的指令都必须携带地址信息,否则电脑不知道读写那块内存。不管程序是用什么语言写的,要运行数据和代码必须驻留内存,CPU要执行指令必须有一个“指针”程序计数器指向内存的代码块,如果某个指令要操作内存数据,该指令必须携带额外的地址信息。2、指针的缺点 指针可以操作任何东西,所以指针很灵活、很强大,但也引入了复杂性。扩展资料1、指针利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。2、输出一串字符时,只需要知道它的第一个字符的地址,就可以将这个字符串输出,而第一个字符的地址,可以用指针储存。所以有n个字符串时,就可以用n个指针来储存。3、为了保存一个数据在内存中的地址,就需要指针变量。因此指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。

上一篇:不难

下一篇:没有了