1. 程式人生 > >結構體指標的應用理解

結構體指標的應用理解

在cjson呼叫時遇到的結構體引數賦值時的問題,需要cJSON**才行,下面兩種方法都行,對比一下。

也對指標理解更深入:

結構體給函式當形參時,由於主函式裡也沒分配結構體空間,只有結構體的地址,區域性函式裡面只能給區域性結構體地址,給結構體的地址放在結構體地址的空間中,要有存放結構體地址空間的地址,也就是下面例子中的cJSON**

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"


/* Parse text to JSON, then render back to text, and print! */
//1、使用返回值進行,返回jSON*
/*cJSON *doit(char *text)
{
char *out;//cJSON *json;
int flag = 0;
cJSON *c = cJSON_Parse(text);
//printf("text = %s\n", text);
return c;


}
*/
//2、使用jSON**給形參
void doit2(char *text,cJSON** root)
{
char *out;
*root = cJSON_Parse(text);
printf("doit2 text = %s\n", text);
}


int main (int argc, const char * argv[]) 
{
/* a bunch of json: */


char sensorValue[] = "{\"WIFIessid\":[{\"ESSID\":\"ylst-s\"},{\"ESSID\":\"mordenmansion\"},{\"ESSID\":\"ChinaNet-wvQS\"},{\"ESSID\":\"CMCC\"},{\"ESSID\":\"CMCC-AUTO\"},{\"ESSID\":\"beacon05\"},{\"ESSID\":\"cnswx\"}]}";
//cJSON *root = (cJSON*)malloc(sizeof(cJSON));
//1、使用返回值進行,返回cJSON*
/*cJSON *root;
char *out;
root = doit(sensorValue);
printf("222 root->type = %d\n", root->type);
out=cJSON_Print(root);
cJSON_Delete(root);
printf("doit:%s\n",out);
*/
//2、使用cJSON**給形參
cJSON *root;
char *out;
doit2(sensorValue,&root);
printf("222 root->type = %d\n", root->type);
out=cJSON_Print(root);
cJSON_Delete(root);
printf("doit2:%s\n",out);


//char * out= NULL;printf("AAABBB\n");
//out = cJSON_Print(root);printf("AAABBB\n");
//printf("AAAAAAAAAAA\n%s\n",out);




return 0;
}

相關推薦

結構指標理解

以前總有一種疑惑。為什麼結構體的指標有的需要用分配空間有的不需要分配空間呢?現在總結一下思路。先上程式碼。 #include <stdio.h> #include <string.h> #include <malloc.h&

結構指標應用理解

在cjson呼叫時遇到的結構體引數賦值時的問題,需要cJSON**才行,下面兩種方法都行,對比一下。 也對指標理解更深入: 結構體給函式當形參時,由於主函式裡也沒分配結構體空間,只有結構體的地址,區域性函式裡面只能給區域性結構體地址,給結構體的地址放在結構體地址的空間中,要

關於如何理解連結串列結構指標引用LinkNode * &L的問題

初學資料結構,在學習的過程中有了這個疑問,已經理解其中緣由,特寫篇部落格和大家一起分享交流。 C++中的引用:& int a=10; int &ra=a; 注意:此處&是識別符號,不是取地址符! a是目標原名稱,ra是引用名,由引用的作用“引用就是某

結構定義、結構指標、記憶體分配、指標結構體形參的深入理解

說明:此程式為深入學習資料結構時候,對於資料結構最重要的基礎(結構體、指標、記憶體分配) 方面的一些理解,我自己通過這段程式說明一些自己得到的結論;希望對看到這篇程式的c愛好者 有幫助,如果有理解錯誤的地方希望各位聯絡我,一起討論學習.說實話,我學習c就半年吧,除了 上課自學的,發現最難的部分就是指標了.廢話

STM32筆記4:基本庫函式寫法(結構指標應用

//構建庫函式雛形 //peripheral:外設 #include"stm32f4xx.h" //peripheral #define PERIPHERAL ((unsigned int)(0x40000000)) #define AHB1_BASE ((unsigned

對於結構指標+、-常數的理解(page_to_pfn和pfn_to_page)

昨天筆試也有這麼道題目,int arrayTmp[10] = {0};int nTmp = &arrayTmp[4]-&arrayTmp[0];問nTmp = ?當時想也沒想寫了nTmp = 16;回家在機器上除錯運行了一下,結果nTmp=4。因為不常用這種

關於位域在結構應用

字節對齊 位域 關於位域在結構體的應用主要要註意內存對齊規則的理解和空域的理解使用位域的主要目的是壓縮存儲,其大致規則為:1)如果相鄰位域字段的類型相同,且其位寬之和小於類型的sizeof大小,則後面的字段將緊鄰前一個字段存儲,直到不能容納為止; 2)如果相鄰位域字段的類型相同,但其位寬之和大於類型的

結構應用-成績錄入初步

str truct 應用 include pri 初步 ++ pos () 1 #include<cstdio> 2 #include<string> 3 4 struct student{ 5 int num; 6

【C/C++開發】函式使用結構結構指標作為返回值分析

函式使用結構體、結構體指標作為返回值分析 32位機,gcc編譯器 使用結構體作為返回值 分析反彙編程式碼可知,當被呼叫的子函式返回值為結構體的時候,呼叫函式將分配一段空間用於存放返回的結構體(使用一個結構體變數接受返回值),並將這段空間的地址作為呼叫時的引數壓棧。子程式不負責對要返回的結構體分

關於定義結構應用

define _CRT_SECURE_NO_WARNINGS include <stdio.h> include <stdlib.h> include <string.h> //# include<str .h> struct

c語言typedef 與結構指標

轉載部落格:https://blog.csdn.net/developerof/article/details/24885205?utm_source=blogxgwz0  #include<stdio.h> #include<

結構_結構指標,tyepdef_union_enum

#include "stdafx.h" #include <stdlib.h> #include <windows.h> #include <string.h> struct Student{ char *name; int age; }; //

C程式碼開發遇到的問題 變數初始化和結構指標移動

1. 變數初始化 函式內部的變數如果不初始化的話預設不是0而是一個隨機值。 下面的程式用來列印一個未初始化的無符號的整型值,執行幾遍,每次的結果都會不一樣 #include <stdio.h> void PrintUint() { /* 預設是隨機值,不一定是0 *

使用offsetof對結構指標偏移操作

題目來自於COMP20003 Tutorial 2: Program m ing Challenge 2.2 The technology stack at Hidebound Inc. uses a subset of C w hich doesn't have the '.' or '->'ope

程式設計題——虛數求和(簡單結構應用

結構體知識回顧 結構基礎知識 一些結構體的使用誤區 兩種不同函式引數定義的函式 定義結構體,仿照int求和函式 利用結構體 指標重新編寫 結構基礎知識 C的聚合資料型別(aggregate data ty

結構指標,C語言結構指標詳解

結構體指標,可細分為指向結構體變數的指標和指向結構體陣列的指標。 指向結構體變數的指標 前面我們通過“結構體變數名.成員名”的方式引用結構體變數中的成員,除了這種方法之外還可以使用指標。前面講過,&student1 表示結構體變數 student1 的首地址,即 student1 第一個項的地址

結構指標和陣列的使用

同種型別的結構體是可以進行賦值的 【1】結構體陣列 (1)結構體陣列的定義 1)具有相同結構體型別的結構體變數也可以組成陣列,稱它們為結構體陣列。 結構體陣列的每一個數組元素都是結構體型別的資料,它們都分別包括各個成員(分量)項。 2)定義結構體陣列的方法和定義結構體變數的方法相仿

結構 指標

結構宣告: 1、可以生命在main()函式中,緊跟在括號的後面,內部宣告只能被該宣告所屬的函式使用; 2、也可以將宣告放到main()的前面,外部宣告可被其後面的任何函式使用。     使用賦值運算子(=)將結構賦值給另一同型別的結構   #

結構指標做函式形參實現返回多個值(fishing_6)

        最近在學ST32驅動數字攝像頭OV2640的實驗,無意中遇到了函式返回多個值的情況,決定Mark一下,說不定以後就會用到,因為一般函式都是隻有一個返回值的嘛,具體如下:         首先在標頭檔案定義結構體:                 typed

當函式使用結構指標變數作為引數時,如果結構中嵌套了結構,應該如何呼叫其中的元素?

今天寫程式碼時突然遇到了這個問題,以前不曾探討過多層巢狀結構體指標變數的訪問,只知道結構體指標變數要訪問其元素時應該用 -> 來訪問,但對於結構體中巢狀有結構體的時候呢? 請看下面程式碼: #include “stdio.h” using namespac