关于字符串数组 做指针输入的问题

问题描述

关于字符串数组 做指针输入的问题

#include
void gb(char **buf)
{
*buf[0] = 'a'; //这里down掉
}

int main()
{
char b[] = { "aaaasssddddasd" };
printf("%sn", b);
gb(&b);
system("pause");
return 0;
}

b是常量指针,不能当做左值这个我知道,这个程序里的被调函数也没有修改b的值。
为什么在 *buf[0] = 'a'; 这里会编译不过去呢?

解决方案

这是我画的内存模型图 老哥们看看有没有问题(O_O)?

解决方案二:

这是我画的内存模型图 老哥们看看哪里出了问题(O_O)?

解决方案三:

首先这个b并不是常量指针,char *b = "aaaasssddddasd";这个才是常量指针,试图修改任何一个字符都会出现异常崩溃
其次这样的传参方式在很多编译器里过不去(例如VS)
*buf[0] = 'a';改成(*buf)[0] = 'a';试试

解决方案四:

如图,没交换值,只通过了编译

解决方案五:

变量b被编译器编译在只读数据段。不能修改内容

时间: 2025-01-26 17:37:03

关于字符串数组 做指针输入的问题的相关文章

C++中字符串以及数组和指针的互相使用讲解_C 语言

C++字符串与指针 在C++中可以用3种方法访问一个字符串(在第5章介绍了前两种方法). 用字符数组存放一个字符串 [例]定义一个字符数组并初始化,然后输出其中的字符串. #include <iostream> using namespace std; int main( ) { char str[]="I love CHINA!"; cout<<str<<endl; return 0; } 运行时输出: I love CHINA! 用字符串变量存放

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

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

指针-字符串数组相关问题,正文有描述

问题描述 字符串数组相关问题,正文有描述 1.char *str[] = { "Welcome", "to", "Fortemedia", "Nanjing" }; 2.char **p = str + 1; 3.str[0] = (*p++)+2; 4.cout << str[0] << endl; 5.str[0] += 1 ; 6.cout << str[0] << end

android-列表视图中输入字符串数组问题

问题描述 列表视图中输入字符串数组问题 在列表视图中我想输入字符串数组.系统一直显示一个错误--构造函数ArrayAdapter(QuizMenuActivity int String[])未定义.以下是代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu); ListView menuList

把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另一个vector,也是将一个vector 的元素逐个赋值给另一vector 的对应元素: //将一个vector 赋值给另一vector,使用迭代器访问vector 中的元素 vector<int> ivec(10, 20); vector<int> ivec1; for (vecto

C/C++数组和指针详解

/****************************************************************/ /*            学习是合作和分享式的! /* Author:Atlas                    Email:wdzxl198@163.com    /*  转载请注明本文出处: *  http://blog.csdn.net/wdzxl198/article/details/9087497 /***********************

命令行参数-C语言 字符串数组处理,50B,急求

问题描述 C语言 字符串数组处理,50B,急求 1.我想写一个程序:(C) 给定一个字符串"test" 生成一个字符串数组,元素分别为"test1","test2""test3""test4".(用for循环,元素数量可变) 2.为什么我程序在把命令行传入的参数赋值给一个字符串变量后,其余的字符串变量都变成了这个参数值?比如: tx[0]="KU"; printf("t1===

Android For JNI(四)——C的数组,指针长度,堆内存和栈内存,malloc,学生管理系统

Android For JNI(四)--C的数组,指针长度,堆内存和栈内存,malloc,学生管理系统 好几天每写JNI了,现在任务也越来越重了,工作的强度有点高,还有好几个系列的博客要等着更新,几本书还嗷嗷待哺的等着我去看,github上的两个散漫的开源,基础入门的视频也在录制,还要学习新的知识, 都是一种挑战,不知道为何,最近懒散了,看来还得再加把劲,今天我们继续延伸一下C的一些小知识 一.数组 C的数组和JAVA也是类似的,我们写一段小程序 #include <stdio.h> #inc

java-传递(UInt8数组的指针)和访问数组

问题描述 传递(UInt8数组的指针)和访问数组 目前正在做关于UInt8数组的相关应用,遇到问题. 我的代码: @interface MyClass : NSObject { __strong id * myArray; //private byte[] myArray; <- Java code } @property (nonatomic,readwrite) __strong id * myArray; @end 在MyClass中的方法: -(int) getArray: (__str