www.fltk.net > 如何定义一个指针指向一个字符串?

如何定义一个指针指向一个字符串?

在c语言中定义一个指针 char *p; char str[10] = "afjkfdhsjk"; p = str; 指针p指向字符串str的首地址

楼上所说的不错,符合楼主的思想,但是却无法得到正确的结果,因为定义的是(char *)p[2]={ch1,ch2};也就是说p[0]的值是ch1的地址,那么*p[0](p[0]等价于p,p[1]等价于p+1)就是一个char型数据了,因此最后一句要去掉* :

二维数组也是“数组的数组”所以定义一个指向由m个元素组成的一维数组指针即可指向二维数组的首元素地址.如:char arr[2][2] = { { 'a', 'b' }, { 'c', 'd' } }; char (*p)[2]; p=arr; // p指向首元素地址. char c = *(p[0]+ 1);// 指向0行1列 即字符b

将指针指向该字符串的首地址即可.比如:char a[] = "abscdf"; char *p = a; // 将字符串"abscdf"的首地址(即数组名)赋值给指针p puts(p); // 等价于puts(a)// 也可以参考下面的示例程序 char *p = "abscdf"; // 在定义指针的时候,就使指针p指向该字符串

指针要么是在初始化的时候进行赋值,如:char *p = "hello world!";要么在之后将指针指向一个已经初始化的内存空间,因为只定义而未初始化的指针不会指向任何内存空间,是不能对指针指向的地方进行赋值的.这就是为什么如果只定义

,但是仍然是属于传值调用的范畴.因为指针只是用来赋值,并没有被间接引用.那么你是不是想用传址调用呢,就这个程序而言,也是不行的.你希望通过交换str1和str2的值来实现字符串的赋值,是行不通的.因为,在C++中,任何一个数组

p2出现乱码的原因是因为 printf以%s输出字 符串的时候,是把从指针指向的位置开始一直输出,直到遇到'\0', 虽然p2指向的是'B',但是在内存中存储单元是连续的,B后面存在未分配的内存单元,一样是可以访问的,如果刚好不是'\0'的话也

将指针指向该字符串的首地址即可.比如:1234567 char a[] = "abscdf"; char *p = a; // 将字符串"abscdf"的首地址(即数组名)赋值给指针p puts(p); // 等价于puts(a)// 也可以参考下面的示例程序 char *p = "abscdf"; // 在定义指针的时候,就使指针p指向该字符串 本回答由电脑网络分类达人 刘聪聪推荐

指针确实就是一个地址.你问的“确定字符串”,实际上是 cout << 的作用.cout<<,是从该地址输出字符串,直到字符串的末尾标志'\0'.

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com