1. 程式人生 > >二級指標與字串陣列

二級指標與字串陣列

 程式源自《C指標:基本概念核心技術及最佳實踐》第四章的字串陣列一節

#include <stdio.h>
#include <string.h>
#include <malloc.h>

void freestrmemory(char** arr, int length);

int main(int argc, char* argv[])
{
    char** arr = NULL;
    char tempstring[30];

    int i;
	
    for(i = 0 ; i< 6; i++)
    {
        printf("Insert data\n");
        scanf("%s",tempstring);
		
        if(arr == NULL)
        {
            arr = (char**)malloc(sizeof(char*));
        }
        else
        {
            arr = (char**)realloc(arr, sizeof(char*)*(i+1));
        }
		
        arr[i] = (char*)malloc(sizeof(char)*(strlen(tempstring) + 1));
        strcpy(arr[i], tempstring);
    }
	
    for(i = 0; i< 6; i++)
    {
        printf(" %d - %s\n", i, arr[i]);
    }
	
    freestrmemory(arr, 5);
    return 0;
}

void freestrmemory(char** arr, int length)
{
    int i;
    for( i = 0; i<=length; i++)
    {
        free(arr[i]);
    }
    free(arr);
}
        

執行結果如下:

[email protected]
# String12.exe        
Insert data           
lkf                   
Insert data           
kjkjk                 
Insert data           
ddsdds                
Insert data           
d                     
Insert data           
sdsd                  
Insert data           
dsd                   
 0 - lkf              
 1 - kjkjk            
 2 - ddsdds           
 3 - d                
 4 - sdsd             
 5 - dsd              
                      

相關推薦

二級指標字串陣列

 程式源自《C指標:基本概念核心技術及最佳實踐》第四章的字串陣列一節 #include <stdio.h> #include <string.h> #include <malloc.h> void freestrmemory(char*

一級指標二級指標字串

c語言中沒有字串型別,通過字元陣列來模擬字串,字串以‘\0’結束。 一、一級指標: 字元陣列的定義: 1.指定長度:char buf[100]={‘a’,‘b’}; 或char buf[100]=“ab”; 如果初始化的字元個數大於陣列長度,將會出現編譯錯

《C++語言程式設計基礎》學習之陣列指標字串

陣列元素在記憶體中順次存放,它們的地址是連續的。元素間實體地址上的相鄰,對應著邏輯次序上的相鄰。 陣列名字是陣列首元素的記憶體地址,陣列名是常量,不能被賦值 陣列名是陣列的指標,指向首個元素的地址,多維陣列的n-1維是指標一維陣列初始化: 在定義陣列時給出陣列元素的初始值:列

char陣列 、char指標字串常量的比較

陣列不是基本型別,不能直接參與比較,陣列與字串及字元指標與字串比較其實比較的是二者的地址。 例: int isequiv(char *t) { if (t == "char") return 1; else return 0; } int main() { char te

字串指標字元陣列

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

字串指標字元陣列的區別

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

嵌入式C語言--指標字串

使用指標這一工具來操作字串。 定義字串變數的初始化方法 char *strptr = "liefyuan"; char strarray1[] = "liefyuan"; char strarray2[8] = "liefyuan"; char strarray3[8] = {'

指標9(指標字串

例題 應用字元指標,將字串“How are you!”從a陣列複製到b陣列。 #include<stdio.h> int main() {char a[]="How are you!",b[20]; char *s1,*s2; s1=a; s2=b; while(*s

指標動態陣列初步+動態陣列元素個數確定方法

一、學到指標與動態陣列趕緊記錄一下 用new操作符為陣列分配記憶體尤其有用,因為陣列的元素個數往往是在程式執行時才能計算得出的 ——《資料結構與面向物件程式設計》(C++版)Michael Main等編著 下面是一部分簡單的程式碼 #include<iostrea

字串常量字串陣列

其實這個問題已經遇到很多次了,每次都百度,當時都明白了,過一會就忘記了 現在暫時記錄整理一下,有時間作總結 首先,C語言沒有字串變數,只有字串常量,所以字串變數的任務就交給字元陣列解決了! 字串常量:"qwer" 嗯,這是一個字串常量,字串常量會在結尾

指標字串指標函式

標題1、 指標與字串的千絲萬縷 由於在C語言中,是通過字元陣列來儲存字串的,因而前面通過指標對一維陣列和二維陣列的操作方法,同樣適用於字串。其實,對字串的操作最好採用字串操作函式。 #include<stdio.h> int main() { char name[12]

指標動態陣列

C語言中如何實現動態陣列: 使用malloc()庫函式(記憶體分配)來得到一個指向一大塊記憶體的指標; 像引用陣列一樣引用這塊記憶體 如果需要使陣列有動態增長的能力,那就修改記憶體的總容量,直接

指標字串知識整理 c語言

一、指標1. 輸出地址printf("%p",&i); //地址 printf("%x",&i); //十六進位制整數32bit下兩者相同,但是64bit就不同2. int* p,q;     //int *p, int q;  沒有int*這種型別,

C++指標字串

C語言裡沒有字串資料型別,要想獲得字串的表示形式利用字元陣列 #include<iostream> using namespace std; #include<stdlib.h&g

C++初學初練數學指標字串之矩陣初練

#include <iostream> #include <string> #include <cmath> using namespace std; class Matrix { public: Matrix(int,int); ~

C++ 字串類,字串變數字串陣列

但是這種方式存在一些弊端,比如字元陣列的大小是固定的,在進行字元連線或字元複製時,需要計算字串與字元陣列的長度,否則就可能發生一部分字元超出陣列範圍。 為此,C++提供了一種新的資料型別——字串型別(string),實際上在C++的基本資料型別中並不包含s

c: string 字元指標字元陣列的區分

來看一段簡單的程式碼,以區分字元指標與字元陣列在表達字串時的一些區別。 #include <stdio.h> #include <string.h> int main(int argc, char const *argv[]) {

字元指標字串

1.字元指標可以指向一個字串。 我們可以用字串常量對字元指標進行初始化。例如,有說明語句: char *str = "This is a string."; 是對字元指標進行初始化。此時,字元指標指向的是一個字串常量的首地址,即指向字串的首地址。 這裡要注意字元指標與字元陣

C/C++ 指標小結——指標其它資料型別(陣列字串、函式、結構體)的關係

一、指標與陣列和字串 1、指標與陣列 當宣告數時,編譯器在連續的記憶體空間分配基本地址和足夠的儲存空間,以容納陣列的所有元素。基本地址是陣列第一個元素(索引為0)的儲存位置。編譯器還把陣列名定義為指向第一個元素的常量指標。 元素的地址是通過索引和資料型別的比例因子來計算的;例如: x[3

指標二級指標指標陣列陣列指標 練習day—17

1.指標 1)指標就是個變數,用來存放地址,地址唯一標識一塊記憶體空間; 2)指標的大小是固定的4(8)個位元組(32(64)位平臺); 3)指標是有型別的,指標的型別決定了指標的+/-整數的步長,指標解引用操作時的許可權; int main() { in