1. 程式人生 > >字串常量與字元陣列的區別和字串常量易錯點

字串常量與字元陣列的區別和字串常量易錯點

#include <stdio.h>

int main()
{
	const char *p = "abc";	//儲存了地址,沒有儲存內容
	char str[] = "abc"; //儲存了內容,沒有儲存地址

	//*p = 't'; //err, 字串常量只讀,不能改
	p = "mike"; //ok, 指標變數本身能改

	*str = 't'; //ok, 陣列元素能改
	//str = NULL; //err, 陣列名為常量,不能改

	return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>


void func(char p[100]) //形參中陣列是指標變數,和上面等價
{
	strcpy(p, "t");
	printf("%s\n", p);
}

int main()
{
	char a[100] = { 0 };
	func(a);
	//func("abc");//錯誤
	printf("%s\n", a);
	system("pause");
	return 0;
}
int main01()
{
	char * p = "hello mike";
	char src[] = "abc";
	strcpy(p, src); //字串常量只讀,不能改
	printf("p = %s\n", p);

	return 0;
}

/*

t

t

*/


相關推薦

字串常量字元陣列區別字串常量

#include <stdio.h> int main() { const char *p = "abc"; //儲存了地址,沒有儲存內容 char str[] = "abc"; //儲存了內容,沒有儲存地址 //*p = 't'; //err, 字串

字串指標字元陣列區別

       陣列和指標都可以在它們的定義中用字串常量進行初始化,儘管看上去一樣,底層的實現機制卻不相同。        定義指標時,編譯器並不為指標所指向的物件分配空間,它只是分配指標本身的空間,除非在定義的同時賦值給指標一個字串常量進行初始化。例如:下面的定義建立了一個字串常量(為其分配了記憶體):

C語言中字串常量字元陣列

字串常量與字元陣列的關係在C語言中沒有專門的字串變數,如果想將一個字串存放在變數中以便儲存,必須使用字元陣列,即用一個字元型陣列來存放一個字串,陣列中每一個元素存放一個字元。例如“char a[10]="love".”

字串指標字元陣列

#include <stdio.h> int main(void) { char *p = "abcdefg"; //用字元指標時,字串存於常量區 P儲存的是字串的首地址; char a[] = "a

字元型別char、字串字元陣列字元陣列資料陣列區別

字元型別是以ASCII碼值運算的:小寫字母比相應的大寫字母大32,其中A=65,a=97 Esc鍵 27(十進位制)、'\x1B'(十六進位制)、'\33'(八進位制) 轉義字元:\0 空字元\n 換行\r 回車\t 水平製表符(Tab鍵)\' 單引號\" 雙引號\\ 反斜槓 char c='M';

matlab裡cellchar,字串字元陣列(zz)

用importdata和textscan讀取內容為字串的txt,結果為cell型元胞組。 我想把cell變成char型,然後就自然地想到cell2str,遺憾的是matlab中沒有這個函式。 就像沒有str2cell一樣。 實現str2cell功能的函式是cel

matlab裡cellchar,字串字元陣列

很多人分不開字元陣列和字串什麼區別。 >>str1='i love matlab' % 這是一個字元陣列,也是一個字串 str1 = i love matlab >>str2=['I ';'am ';'a ';'boy'];% 這是字元陣列,由於是陣列,所以每一行必須具有相同的列數(字

java 陣列length字串length的區別

陣列有length屬性,沒有length()方法,如: int[] a; a.lengh;   //返回a的長度。 String只有length()方法,沒有length屬性,如: String s; s.length();  &nb

字串常量字元陣列進行初始化

有幾種錯誤的初始化方法要注意: char str[3] = {"abc", " ", " "}; error : excess elements in char array initializer char str[3] = "abc"; char str[3] = {"a

字串字元陣列

一 . 使用帶%s格式符的scanf函式讀入字串時,不需要再引數前加取地址符&。 原因:編譯器會自動將陣列名作為陣列首地址來處理。 如:scanf("%s", str); 二 . 字元陣列與字串 (這兩個概念其實現在我也不是很清楚),但看到的一句話可以幫助理解:在C語言中,將

java 字串字元陣列相互轉化,字串位元組陣列相互轉化

package com.liuxd; /** * Created by Liuxd on 2018-11-02. */ public class TestString { public static void main(String[] args) throws Exception

leetcode——中級演算法——陣列字串——無重複字元的最長字串

給定一個字串,找出不含有重複字元的最長子串的長度。 示例1 輸入: "abcabcbb" 輸出: 3 解釋: 無重複字元的最長子串是 "abc",其長度為 3 示例2 輸入: "bbbbb" 輸出: 1 解釋: 無重複字元的最長子串是 "b",其長度為 1。 示例3

C語言基礎知識筆記:day4字串字元陣列

注:本筆記為直接上傳,因各個markdown筆記語法的差異性,在顯示上略有區別。 如需原版請聯絡:[email protected]。(郵件主題為:學習筆記,正文需要的筆記名,可以直接複製該筆記的網址)。同時歡迎各位一起學習交流。 day4字串與字元陣

字串字元陣列轉化

1:字元陣列換為字串 見程式碼 #include <iostream> #include <string> using namespace std;   int main

Java空字串null的區別判斷字串是否為空的方法

public class String_Demo01 { /** * @param args */ public static void main(String[] args) { String str1 = new String() ;

C++ 字串字元陣列 詳解

在C++中,有兩種型別的字串表示形式: C-風格字串 C++引入的string類 C-風格字串 C 風格的字串起源於 C 語言,並在 C++ 中繼續得到支援。字串實際上是使用 null 字元 ‘\0’ 終止的一維字元陣列。因此,一個以 null 結

函式裡定義的字串常量字元指標

今天產品同事問了個檔案系統相關的問題,平臺這邊的檔案系統自己組織,定義了個結構體陣列,數組裡面有個字元指標,在產品呼叫相關介面函式時將函式名(其實是個字串)賦給該指標。產品同事說這樣有問題,說沒有給指標申請空間,就直接用了,他這麼一問我也懵了,平臺一直在用,沒有問題啊,百

String類的常用方法,實現首字母大寫(重要),轉換大小寫,判斷字串是否由數字組成,字串字元陣列的轉換

(1)String類的常用方法:示例:觀察Public char charAt(int index)public class Test {public static void main(String[] args) {// TODO Auto-generated method

C語言中,利用巨集定義一個字串字元陣列定義的字串其末尾都會自動新增\0字元

#include <stdio.h> #define MYPHONE "AT+CMGS" unsigned char SMS[]="HELLO, WELCOME TO RCCTS!"; unsigned char *String; unsigned char i=0; void main() {

js字串字元陣列之間的轉換

strObj.match(reg)方法對字串物件進行檢索,返回包含所有匹配結果的陣列。而 正則表示式 /./g 匹配的是所有的字元, 所以str.match(/./g)返回的是由字串str中所有的字元組成的陣列,以此達到將字串轉換為陣列的目的。 2、array to string 陣列轉字串使用strOb