c语言-C语言字符数组和指针的关系

问题描述

C语言字符数组和指针的关系

#include
using namespace std;

void reverse(char* s)
{
char *p,*q,temp;
p = s;
q = s + strlen(s) - 1;

while(p<q)
{
    temp = *p;
    *p = *q;
    p++;
    q--;
}

}

int main()
{
char name[] = "abcdef"; //为什么换成 char* name = "abcdef";就错误?
reverse(name);
cout<<name<<endl;

return 0;

}

解决方案

你需要拥有合法的内存去存储,char name[] = "abcdef";在定义的时候已经开辟出合法的内存块
char* name = "abcdef";这个是在给一个指针赋值

指针与数组的关系是,指针指向数组的首地址

解决方案二:

你需要拥有合法的内存去存储,char name[] = "abcdef";在定义的时候已经开辟出合法的内存块
char* name = "abcdef";这个是在给一个指针赋值

指针与数组的关系是,指针指向数组的首地址

时间: 2024-08-31 12:07:25

c语言-C语言字符数组和指针的关系的相关文章

C语言字符串与字符数组

问题描述 #include "stdafx.h"#include "string.h"int main(int argc, char* argv[]){//char b[5] = {"hello"}; //编译时报错char b[6] = {"hello"};//或//char b = {"hello"}; //正确char a[5] = {'h', 'e', 'l', 'l', 'o'};printf(&

语言-关于一个字符数组的问题

问题描述 关于一个字符数组的问题 假如我定义了一个char name[40],跟据书中的描述,一个字符串是以''结尾, 我的问题是,这个也要占一个字节,那么这个是在40数组中的最后一个呢?也就是 说实际上程序只允许我有39个字符,还是放在我定义的字符数组以外呢? 解决方案 char name[40]是一个字符数组,并不是字符串,你可以写一个小程序测一下就明白了 解决方案二: 你说的很对,只能保存39个. 解决方案三: 难道你的字符串中会有''字符.你是不是要把字符串变成字符数组,或者字符数组变成

C++程序设计-第16周字符数组及指针上机实践项目

回到课程主页,链接:C++程序设计课程主页-2012级 本次上机对应的教学内容:第5章   数组 - 字符数组,第六章 指针 指针的基本概念 第一部分 程序分析 阅读下面的程序,先写出其运行结果,再上机运行进行对比.必要时,单步执行程序,在监视(watch)窗口中观察变量的动态变化,从而掌握程序的运行机理. (1) #include <iostream> using namespace std; void prt(int*, int*, int*); int a=10, b=40, c=20;

C++中一维数组与指针的关系详细总结_C 语言

对于数组int a[10];a表示数组的第一个元素的地址,即&a[0]; 如果使指针p,指向数组的首元素,可以进行操作:int * p=a;或者int *p=&a[0]; 那么p++,是指向数组中的先一个元素,即a[1];此时*p则是a[1]中所放的值.此时,a[i]=p[i]=*(a+i)=*(p+i) 下面举一个例子:直接用a[i]来输出 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int a[1

理解C语言——从小菜到大神的晋级之路(8)——数组、指针和字符串

       本期视频点击这里        在前面几次我们接触的数据类型都是简单数据类型,使用一个数据个体表示一个元素.C语言中还提供了多种复杂数据类型,其中最简单的一种就是数组.数组这一结构使用内存中一段连续的内存空间保存一组相同类型的变量,这些变量通过数组的下标/索引的不同相互区分.数组与指针有着十分紧密的联系,通常使用数组下标能实现的操作都可以使用指针完成,而且使用指针的程序通常效率更高.但是指针和数组也存在着一些明显的差别,如果误用将导致错误.另外,C语言中还定义了一种极为常用的特殊的

malloc-C语言中的字符指针操作问题,如何释放字符指针空间?

问题描述 C语言中的字符指针操作问题,如何释放字符指针空间? 源码如下: #include #include #include void main() { char s1; char *s2 = "bbb"; char *s3 = "ccc"; s1 = (char)malloc(sizeof(s2)); strcpy(s1, s2); strcat(s1, s3); //free(s2); //free(s3); printf("%s ", s

c语言中向二维字符数组中写入符号*

问题描述 c语言中向二维字符数组中写入符号* 声明一个二维字符数组char str[][]: 通过循环嵌套向里面写入符号 * 怎么实现?求前辈指教. 解决方案 for (int i = 0; i < 100; i++) { arr[i / 10][u % 10] = ' '; } for (i =0; i < 10; i++) { arr[3][i] = '*'; arr[4][i] = '*'; arr[i][3] = '*'; arr[i][4] = '*'; } 解决方案二: 只要一行

c 字符串输入-c语言中如何动态输入字符串而不需要事先定义字符数组大小

问题描述 c语言中如何动态输入字符串而不需要事先定义字符数组大小 如标题 c语言中如何动态输入字符串而不需要事先定义字符数组大小或为字符指针分配空间 解决方案 你这个要求实际使用度太低,或者说,完全没有必要非要这样去想. 解决方案二: c语言中字符串与字符数组c语言中的字符数组与字符串C语言 字符数组和字符串 解决方案三: 你这样定义好了char *p; 解决方案四: #include #include #include #define Step 10 //空间增加的步长. char * get

C语言核心之数组和指针详解

指针 相信大家对下面的代码不陌生: int i=2;                                             int *p;                                              p=&i;  这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址.如上代码,指针p中保存的是整型变量i的地址信息. 接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也