字串常量不可賦值,字元陣列可以
C語言中除了初始化外,給字串賦值的方法有memcpy、strcpy和sprintf。
專案中將使用到的字串定義為常量,然後試圖用sprintf改變它的值,一直失敗,後來定義改為字元陣列就可以了。程式碼如下:
char *str = "aaaa"; char chArray[] = "aaaa"; sprintf(str,"%s","bbbb"); sprintf(chArray,"%s","bbbb"); strcpy(str,"cccc"); strcpy(chArray,"cccc"); memcpy(str,"dddd",5); memcpy(chArray,"dddd",5);
上面的程式執行後,str一直保持為"aaaa",chArray則從aaaa到bbbb,到cccc,在到dddd變化。最後memcpy的長度為5,是因為字串最後要有個'\0'。
這是因為字串常量儲存在靜態儲存區,指標str是個區域性變數,儲存在棧內,它的內容就是靜態儲存區的地址。字元陣列是個區域性變數,儲存在棧內,chArray是首個字元的地址。
相關推薦
字串常量不可賦值,字元陣列可以
C語言中除了初始化外,給字串賦值的方法有memcpy、strcpy和sprintf。 專案中將使用到的字串定義為常量,然後試圖用sprintf改變它的值,一直失敗,後來定義改為字元陣列就可以了。程式碼如下: char *str = "aaaa";
字串的賦值,字元與數字之間的轉換
#include<stdio.h> //法1:字串賦值 void Mystrcpy(char des,charsrc) { int i; for(i=0;src[i]!=’\0’;i++) { des[i]=src[i]; } des=’\0’; }
C語言中,為什麼字串可以賦值給字元指標變數
1.以字串形式出現的,編譯器都會為該字串自動新增一個0作為結束符,如在程式碼中寫 "abc",那麼編譯器幫你儲存的是"abc\0" 2."abc"是常量嗎?答案是有時是,有時不是。 不是常量的情況:"abc"作為字元陣列初始值的時候就不是,如 char str[] = "
字元陣列賦值,以及memset用法注意
1,字元陣列賦值 char a[10]; 怎麼給這個陣列賦值呢? 1、定義的時候直接用字串賦值 char a[10]="hello"; 注意:不能先定義再給它賦值,如char a[10]; a[10]="hello";這樣是錯誤的! 2、對陣列中字元逐個賦值 char a[10]={'h','e','l',
字串常量不可修改,陣列可修改的原因
一般情況下,想要獲得字串str=”kuai lai xiu gai wo”中的某個字元可以通過類似陣列方式獲得,str[i],但是卻不可以通過str[i] = ‘xx’來修改。除非切割字串或者轉換為陣列。 var str = "beijing"; str[
C/C++中,為什麼字串可以賦值給字元指標變數,單引號和雙引號的區別
本文是通過幾篇轉帖的文章整理而成的: http://www.slyar.com/blog/c-quotation-marks.html http://www.cnblogs.com/KingOfFreedom/archive/2012/12/07/2807223.html
定義一個數組,陣列初始長度由控制檯獲取 。隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍並輸出,清空陣列中所有元素且值繼承陣列長度,並重新進行手動新增元素,無限死迴圈直至輸出-0後結束程式。
package com.tedu; import java.util.Arrays; import java.util.Scanner; /** * 需求: * 定義一個初始陣列,陣列初始長度由控制檯獲取 * 隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍輸
編寫程式由從標準輸入裝置讀入的元素資料建立一個int型vector物件,然後動態建立一個與該vector物件大小一致的陣列,把vector物件的所有元素賦值給新陣列
先建立一個含有若干int型的vector容器,變數名為ivec。用標準輸入來初始化這個容器的每一個元素。 再動態建立一個int型陣列,利用迭代器來遍歷容器,並利用容器來初始化動態建立的陣列 最後的cout<<*(p-10)是返回到了陣列的最開始的位置,p指標又重新指向了第一個元素
給easyui-combotree控制元件賦值,陣列值,多個值
html: <div class="add_box add_typename"> <span class="id_name"><i>*
C#List轉字串,字串轉List,字元陣列轉Int陣列,字串轉string,取某一位置字元等
List轉字串 [C#] 純文字檢視 複製程式碼 01 02 List<string> List = new List<string>(); string strArray = string.Join(",", List
java小程式——給陣列隨機賦值,查詢輸入的值以及冒泡和選擇排序陣列並輸出
import java.util.Random; import java.util.Scanner; public class Test1{ public static void main(String[] args) { Scanner sc=new Scanner(Sy
字串,字元陣列,整型陣列,List之間的轉換應用
1、字串——>字元陣列: public class Zhuanhuan { public static void main(String []ags){ String string="fgdshfgdf"; char []c=
如何寫一個巢狀實體類,賦值,轉化為JSON格式的字串
1、下面是實體類的寫法 import java.io.Serializable; import java.util.List; import com.alibaba.fastjson.JSONObject; //通過Serializable的toString方法,將類轉變為
Java宣告一個10個元素的整數陣列,隨機賦值,列印輸出,排序後,列印輸出
import java.util.Random; public class Arr11{ public static void main(String[] args){ int[] aa =new int [10]; Rand
c語言 陣列名&&結構體名 為什麼不能用陣列名給陣列賦值,結構體卻可以
/* name:陣列&&結構體的一些小插曲(陣列名,結構體名,整體賦值...) */ #include <stdio.h> int main() { char c1[3]={'a','b','c'}; /*c1[3]={'a','b'};這樣不行 why ?so easy! c
C++筆記(11):拷貝控制(拷貝移動,構造賦值,析構)
con 對象 構造函數 col let 拷貝控制 支持 運算符 () 控制對象拷貝,賦值,析構 拷貝構造函數,移動構造函數 拷貝賦值運算符,移動賦值運算符 析構函數 -----------------------------------------------
一種簡單的對象賦值方法,定義實例後以{}賦值,比傳統方法更簡潔
method ott static set num arr nbsp st2 () public class Rectangle { public Point TopLeft { get; set; } public Point Botto
引用賦值,淺拷貝和深拷貝
lan art csdn 理解 article 淺拷貝和深拷貝 blank .net hang 三種引用: http://blog.csdn.net/XIAXIA__/article/details/41652057 深拷貝和淺拷貝的理解: http://blog.csdn
Python 變量(賦值,數據類型,數據類型轉換)
pos pytho 賦值 變量 多個 區分大小寫 劃線 clas python 一.python 變量賦值方式有三種; 1.直接賦值:age = 28 2.多個變量賦值 age, sex = 28, 1 #每個變量都必須要有個對應的值 3.特殊形式的賦值 a =
解構賦值,你不能不懂!
es6語法解構賦值 很多人可能和我一樣,第一次看到這個詞的時候摸不著頭腦。但是冷靜再看一遍好像明白了,“把數據結構分解開分別進行賦值”。 我們先看幾個小例子 let [a,b,c] = [1,2,3];console.log(a,b,c);//1 2 3 let {name,age} = {name:&qu